Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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
C# 将EF实体映射到POCO业务实体_C#_Visual Studio 2012_Mapping_Entity Framework 5_Automapper - Fatal编程技术网

C# 将EF实体映射到POCO业务实体

C# 将EF实体映射到POCO业务实体,c#,visual-studio-2012,mapping,entity-framework-5,automapper,C#,Visual Studio 2012,Mapping,Entity Framework 5,Automapper,我们必须重构一个遗留项目,该项目由EF5、VS 2012和SQL Sevrer 2008 R2实现。 有不同的层: 包含POCO类的业务层 实现存储库模式的数据访问层 上下文类(使用DbContext) 目前,业务POCO类和EF实体是相同的。没有映射,但使用T4模型模板生成的实体也被用作业务实体,因此,业务逻辑被注入使用分部类作为实体扩展 目标是解耦实体,将EF实体移动到单独的项目中,从而创建一个模型层。我的想法是在业务层创建表示模型层中相对对应对象的业务对象 但是,我是否必须手动为两个层

我们必须重构一个遗留项目,该项目由EF5、VS 2012和SQL Sevrer 2008 R2实现。
有不同的层:

  • 包含POCO类的业务层
  • 实现存储库模式的数据访问层
  • 上下文类(使用DbContext)
目前,业务POCO类和EF实体是相同的。没有映射,但使用T4模型模板生成的实体也被用作业务实体,因此,业务逻辑被注入使用分部类作为实体扩展

目标是解耦实体,将EF实体移动到单独的项目中,从而创建一个模型层。我的想法是在业务层创建表示模型层中相对对应对象的业务对象


但是,我是否必须手动为两个层之间的所有属性创建映射(在某些情况下,一个表甚至可以有40个字段)?可以使用Automapper来实现这一点吗?

是的,可以使用Automapper。但我建议您使用代码优先的方法——直接持久化域实体。您可以手动编写实体框架映射,也可以使用生成它们。这将从您的系统中删除不必要的复杂性。

Whoa、EF5、VS2012和SQL Server 2008现在是“遗留”吗?这大大放松了人们通常理解的“遗留软件”的定义…:)我指的是遗留项目,从某种意义上说,我们认为它已经存在,我们必须对它进行相应的更改/重构。也许是我这边的定义问题。感谢lazyberezovsky的链接,我将尝试使用该工具,看看如何适合我们的解决方案。