我正在使用ASP.NET MVC和Entity Framework开发一个中型ASP.NET项目。我已经开发了一个3层系统,通过设置3个Visual Studio项目并相应地引用它们:
我遇到的“问题”是我在BO中进行了大量的手动一对一映射。例如,当调用User.load()时,我从EF加载用户,然后将EF结果中的一些参数(名字,姓氏,用户名,活动等)映射到对象上的参数。
我认为这是好事和坏事。好:它将EF与项目断开连接,所以如果我需要使用另一个数据存储,我不仅仅与EF绑定。不好:需要花费更多时间,因为我必须设置每个参数并通过实现我自己的更改跟踪在Add(),Update()等上仔细处理它们。
您如何看待这种方法?
答案 0 :(得分:0)
它将EF与项目
断开连接
这确实很好。
我在BO中做了很多手动的一对一映射
我建议你看看AutoMapper。
我发现Manning的“ASP.NET MVC in Action”一书非常好。最近发布的第二个版本也包含了一个关于AutoMapper的小章节。它不在免费样本章节中,但您可能想查看源代码(或者当然是购买本书)。
答案 1 :(得分:0)
如果您使用的是.Net 4.0,那么您一定要考虑创建和使用POCO实体而不是EntityObject,它不仅可以为您提供Persistence Ignorance(您已经提到过),而且您工作之后也不需要任何Mapper在所有层中使用POCO(Plain Old CLR Object),包括您的数据访问。 如果您还没有使用EF& POCO,那么这将是一个良好的开端: http://blogs.msdn.com/b/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx
如果您正在使用.Net 3.5 SP1并且无法升级到4.0,那么就像正确提到的XIII一样,AutoMapper将自动化您的映射过程,或者您可以提供自己的AutoMapper,它只不过是一个简单的反射代码。