|
|
1
1
如果您想要取两个不同的数据库,并将它们视为同一个数据库,就您的应用程序而言,那么您需要在它们之间有一个隐藏差异的抽象层。 我想你有几个选择。一种方法是使用两个不同的EF模型,然后您看到存储库模式来抽象它们之间的差异。第二种选择是进行某种条件映射。 对于数据库之间的差异,您并不是非常具体,因此很难给出每个选项的具体示例,但第一种方法的一般思想是编写一个表示存储的接口,如下所示:
现在,您可以针对这个接口而不是直接针对上下文编写服务/业务层。 您可以实现“旧”ef映射的接口,如下所示:
第二个选项是进行条件映射。在这种情况下,您将使用新的代码优先功能,该功能当前位于实体框架4的CTP中,它允许您在运行时指定表名和行名。 在这两个选项中,我可能会选择存储库模式选项,因为我认为您无论如何都要使用存储库模式。它使得单元测试和其他关注点变得更简单。但任何一个都可以。 |
|
|
2
0
我有一个类似的情况,我有一个非ef基于Oracle的应用程序。我将它切换到基于SQL Server EF的数据库系统,并在此基础上重新构建了应用程序。当您移植到一个新框架(ASP MVC)时,我所要做的也是从数据库重新开始。您可以做的是编写C代码来完成从旧数据库到新数据库的导入,并在字段之间进行任何转换等,作为导入过程的一部分。当我进行转换时,我每晚都会从旧系统导入新系统,这样用户就可以在看到现有数据时跟上新系统的速度。 |