Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 重构解决方案以使用实体框架4.3(代码优先)_.net_Entity Framework_Refactoring_Ef Code First - Fatal编程技术网

.net 重构解决方案以使用实体框架4.3(代码优先)

.net 重构解决方案以使用实体框架4.3(代码优先),.net,entity-framework,refactoring,ef-code-first,.net,Entity Framework,Refactoring,Ef Code First,我想就这个问题提出一些建议: 我们有一个解决方案,它使用经典的ADO.NET进行数据访问(它已经有4年多的历史了)。 数据访问体系结构早在.NET 2.0时代就已构建。 我们的数据类是简单的类,它们继承自,比如说,FooDataBaseObject(名称实际上并不重要),它有一个CRUD操作的默认实现。我们的属性用自定义属性标记(保存必要的数据,如表中相应列的名称等)。数据类也是如此(自定义属性用于指定表名等) 实体之间的关系在特殊的.xsd和.xml文件中指定。表本身很少有外键和其他典型约束

我想就这个问题提出一些建议: 我们有一个解决方案,它使用经典的
ADO.NET
进行数据访问(它已经有4年多的历史了)。 数据访问体系结构早在
.NET 2.0时代就已构建。
我们的数据类是简单的类,它们继承自,比如说,
FooDataBaseObject
(名称实际上并不重要),它有一个CRUD操作的默认实现。我们的属性用自定义属性标记(保存必要的数据,如表中相应列的名称等)。数据类也是如此(自定义属性用于指定表名等)


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


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

我想听听这种方法的潜在瓶颈,以及这种可能性(这是真的吗?)或者其他一些建议,等等。
谢谢大家!

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

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

不经修改就不可能将类映射到旧代码,因为旧代码似乎依赖于它自己的助手方法以及提交或回滚数据的方法。如果对现有对象模型一无所知,很难说

我要做的是创建一个EF模型,然后在升级应用程序时开始逐件使用它。只要您现有的代码单独处理事情,并且代码中没有太多的依赖关系