我决定将我的DAL转换为实体框架4.0。
我已经拥有了我庞大的数据库以及许多业务类。
如何将表和字段映射到我的类?实体框架4
实体框架4
回答
有很多方法来剥皮这只猫。想到的就是AutoMapper。
您还可以与LINQ做手工,例如:
MyObject obj = (from e in entityModel
select new MyObject {
ID = e.ID,
Name = e.Name,
// etc...
}
);
您也可以编写使用反射来映射按类型和名称的属性你自己的方法。
...只是抛出一堆想法。
实体框架允许您为“概念”域(您的对象)创建一个映射,并为“存储”域(您的数据库)创建一个单独的映射。然后使用中央概念< - >存储映射规范将这些映射到一起。这听起来很复杂,不幸的是它...... EF不是一个轻量级的工具。
有很多东西需要学习,但是要开始的地方应该是在CSDL, SSDL, and MSL specifications for Entity Framework上阅读。
如果要使用当前对象和数据库,则可能必须在CSDL,SSDL和MSL中定义自定义映射。如果您想让您的生活更轻松,可以使用内置的Visual Studio工具生成默认的实体数据模型。从现有数据库创建EDM将生成映射到数据库的对象,但有大约一百万种方法来定制此过程,并且有几种方法可以定义对象,以便它们可以与EF一起使用。
我会建议从您的数据库中创建一个默认的EDM,并看看生成的.edmx文件。 .edmx通常包含XML格式的CSDL,SSDL和MSL以及生成的代码。 (这也可以完全定制)。你可能还想花一些时间阅读EF ......这是一个野兽。
Kon的回答和我自己定义CSDL,SSDL和MSL有什么区别?效率方面哪个更好? – Naor 2011-04-08 02:01:04
Kon正在讨论查询数据库,并手动或自动将结果对象映射到现有对象模型。如果您选择使用EF工具生成默认EDM,然后将这些默认生成的对象映射到对象中,则可以执行此类操作。我无法真正地说出最适合您的情况,我建议您首先坚持基本原则,并且在您了解更多信息时,请探索其他做事方式。 – 2011-04-08 02:03:34
因此,通过自己定义CSDL,SSDL和MSL,我实际上创建了“我自己的”EDM? – Naor 2011-04-08 02:07:48
- 1. 实体框架4
- 2. 实体框架4从实体集合
- 3. 实体框架4和POCO
- 4. 实体框架4 ObjectContext GuideLines
- 5. 实体框架4 DDL
- 6. 实体框架4 - 关联
- 7. 实体框架4 POCO代
- 8. 在实体框架4
- 9. 实体框架4和WPF
- 10. Lucene.net与实体框架4
- 11. 实体框架4 vs NHibernate
- 12. 实体框架4与Oracle
- 13. 实体框架4或DataSet?
- 14. 实体框架4约定
- 15. System.Reflection.ReflectionTypeLoadException与实体框架4
- 16. 实体框架4 - 继承
- 17. 查询实体框架4
- 18. 实体框架4:Phantom MDF
- 19. 实体框架4网站架构
- 20. 实体框架4 IObjectSet包括
- 21. ModelState.IsValid = false MVC 4实体框架
- 22. 实体框架4更新子集合
- 23. 实体框架4更改审计
- 24. 实体框架MVC 4类问题
- 25. 更新实体框架4-4.5
- 26. 实体框架4表值函数
- 27. 实体框架4级联更新?
- 28. sqlite 1.0.80.0 .NET 4和实体框架
- 29. 现有父实体框架4
- 30. 实体框架4缺少的功能?
@Kon:对不起,但我是EF新手。人们通常将实体对象转换为自己的业务对象?这是我们应该使用EF的方式吗? – Naor 2011-04-08 01:18:28
我已经看到它完成了,并做了不同的方式。事实上,我已经完成了我提到的所有3种方法,并且我还直接在前端使用了EF生成的模型(这是最简单的方法,特别是对于较小的项目/网页) 。所有人都有优点和缺点。 AutoMapper很好,因为它使映射相对无痛。但是,与大多数第三方库一样,这里可能会有一些开销(在这个项目中可能会或可能不会)。 LINQ映射很好,因为它的开销不大,但你仍然必须... – Kon 2011-04-08 01:23:01
...映射每个属性你自己,并保持逻辑更新,只要你的数据库模式改变。使用反射进行映射最初实施起来比较复杂,但即使在数据库模式发生变化时,您几乎不必更新它。但是你付出了代价 - 使用反思,对于这个特定的项目,你可能会(也可能会)也可能不会对你有好处。无论采用哪种方式,我都建议通过Google进行更多研究,以查看最适合您的需求。 – Kon 2011-04-08 01:24:50