如何从ADO.net模型动态创建动态数据传输对象

时间:2011-02-15 05:02:35

标签: asp.net entity-framework ado.net asp.net-mvc-3 entity

我有一个非常简单的数据库,包含5个表,PK和关系设置等。我还有一个ASP.net MVC3项目,我用来创建简单的Web服务,使用post /将JSON / XML提供给移动应用程序得到。要访问我的数据,我正在使用ADO.net实体模型类来处理实体的生成等。

由于ADO.net实体模型中自动生成的关系所产生的序列化/循环引用问题,我不得不创建“​​数据传输对象”来去除不需要的关系和数据。转移。

问题1:使用实体框架本身是否有更简单的方法来创建DTO? IE,只指定我要转换为Jsonresults的实体属性?如果我能提供帮助,我不希望使用任何第三方框架。

问题2:实体框架的一个侧面问题,比如说我在解决方案中的一个项目中创建了一个ADO.net实体模型。因为该模型依赖于与项目A中指定的数据库的连接,项目B可以以某种方式使用具有类似连接的模型吗?两个项目都在同一个解决方案中。

谢谢!

2 个答案:

答案 0 :(得分:4)

  

我被迫创建“数据传输对象”以去除不需要传输的关系和数据。

你认为这是坏事吗?相反,正是如此设计的ASP.NET MVC应用程序应该如何工作:它应该使用视图模型。而且不仅适用于返回JSON而且适用于所有操作的操作。您应该避免将EF模型传递给视图。观点永远不应该知道EF的存在。视图模型是专门为满足视图要求而设计的类。因此,控制器查询存储库以获取模型(EF),将其映射到视图模型并将其传递给要显示的视图。要简化模型和视图模型之间的映射,可以使用AutoMapper

答案 1 :(得分:1)

RE:问题2:重载ObjectContext构造函数以获取各种EntityConnections和Connection字符串。其中一个重载可以让你到达你需要的位置。