2011-04-08 202 views
2

我决定将我的DAL转换为实体框架4.0。
我已经拥有了我庞大的数据库以及许多业务类。
如何将表和字段映射到我的类?实体框架4

回答

1

有很多方法来剥皮这只猫。想到的就是AutoMapper

您还可以与LINQ做手工,例如:

MyObject obj = (from e in entityModel 
       select new MyObject { 
        ID = e.ID, 
        Name = e.Name, 
        // etc... 
       } 
       ); 

您也可以编写使用反射来映射按类型和名称的属性你自己的方法。

...只是抛出一堆想法。

+0

@Kon:对不起,但我是EF新手。人们通常将实体对象转换为自己的业务对象?这是我们应该使用EF的方式吗? – Naor 2011-04-08 01:18:28

+1

我已经看到它完成了,并做了不同的方式。事实上,我已经完成了我提到的所有3种方法,并且我还直接在前端使用了EF生成的模型(这是最简单的方法,特别是对于较小的项目/网页) 。所有人都有优点和缺点。 AutoMapper很好,因为它使映射相对无痛。但是,与大多数第三方库一样,这里可能会有一些开销(在这个项目中可能会或可能不会)。 LINQ映射很好,因为它的开销不大,但你仍然必须... – Kon 2011-04-08 01:23:01

+1

...映射每个属性你自己,并保持逻辑更新,只要你的数据库模式改变。使用反射进行映射最初实施起来比较复杂,但即使在数据库模式发生变化时,您几乎不必更新它。但是你付出了代价 - 使用反思,对于这个特定的项目,你可能会(也可能会)也可能不会对你有好处。无论采用哪种方式,我都建议通过Google进行更多研究,以查看最适合您的需求。 – Kon 2011-04-08 01:24:50

1

实体框架允许您为“概念”域(您的对象)创建一个映射,并为“存储”域(您的数据库)创建一个单独的映射。然后使用中央概念< - >存储映射规范将这些映射到一起。这听起来很复杂,不幸的是它...... EF不是一个轻量级的工具。

有很多东西需要学习,但是要开始的地方应该是在CSDL, SSDL, and MSL specifications for Entity Framework上阅读。

如果要使用当前对象和数据库,则可能必须在CSDL,SSDL和MSL中定义自定义映射。如果您想让您的生活更轻松,可以使用内置的Visual Studio工具生成默认的实体数据模型。从现有数据库创建EDM将生成映射到数据库的对象,但有大约一百万种方法来定制此过程,并且有几种方法可以定义对象,以便它们可以与EF一起使用。

我会建议从您的数据库中创建一个默认的EDM,并看看生成的.edmx文件。 .edmx通常包含XML格式的CSDL,SSDL和MSL以及生成的代码。 (这也可以完全定制)。你可能还想花一些时间阅读EF ......这是一个野兽。

+0

Kon的回答和我自己定义CSDL,SSDL和MSL有什么区别?效率方面哪个更好? – Naor 2011-04-08 02:01:04

+0

Kon正在讨论查询数据库,并手动或自动将结果对象映射到现有对象模型。如果您选择使用EF工具生成默认EDM,然后将这些默认生成的对象映射到对象中,则可以执行此类操作。我无法真正地说出最适合您的情况,我建议您首先坚持基本原则,并且在您了解更多信息时,请探索其他做事方式。 – 2011-04-08 02:03:34

+0

因此,通过自己定义CSDL,SSDL和MSL,我实际上创建了“我自己的”EDM? – Naor 2011-04-08 02:07:48