重构解决方案以使用Entity Framework 4.3(代码优先)

时间:2012-09-22 10:37:43

标签: .net entity-framework refactoring ef-code-first

我想对这个问题有一些建议: 我们有一个使用经典ADO.NET进行数据访问的解决方案(就像4岁以上)。 数据访问体系结构已经在.NET 2.0.时构建 我们的数据类是从FooDataBaseObject(名称实际上并不重要)继承的简单类,它具有CRUD操作的默认实现。我们的属性标有自定义属性(保存必要的数据,如表中相应列的名称等)。与数据类相同(自定义属性用于指定表名等)。


实体之间的关系在特殊的.xsd和.xml文件中指定。表本身很少有外键和其他典型的约束(我们实际上已经继承了这个表,客户已经禁止我们修改它们,因为它们仍然使用导入和导出引擎)。但我相信我能够说服人们重构数据库。


问题在于现有服务。有没有办法引入EF仍有可能使用旧的ado.net服务? 我目前正在考虑使用 EF Code First 方法的想法,因为我不需要生成或继承某些特定的类等实体,而不是我将能够(我希望)为它们构造DbContext并映射到现有数据库。 此外,可能有一种方法可以为旧数据类创建镜像类。说Customer - > CustomerEntityCustomerEntity将镜像Customer的所有必要属性,然后在DbContextDbSet中使用,以便我们在新服务中使用CustomerEntity只是Customer旧的。

我想知道这种方法的潜在瓶颈以及这种方法的可能性(这实际上是真的吗?)还是其他一些建议等等。 谢谢!

1 个答案:

答案 0 :(得分:1)

如果表没有外键关系,那么使用EF会遇到很多问题。 EF通常依赖于这些关系,以便在代码中创建关系。

当然,您可以将它们视为单独的表格 - >单个对象并手动处理所有键。

您不太可能无需修改就可以将类映射到旧代码,因为旧代码似乎依赖于它自己的辅助方法,以及提交或回滚数据的方法。在不了解现有对象模型的情况下,很难说。

我要做的是创建一个EF模型,然后在升级你的应用时开始逐个使用它。只要您现有的代码单独处理事物,并且整个代码中没有很多依赖项。