我正在使用 EF 4.1 Database First 方法,使用 T4 模板在单独的程序集中生成我的 POCO 类。我有用于获取数据的存储库和用于与 UI 通信的服务层。
我试图制作级联下拉菜单。
我是 MVC 和 EF 4.1 的新手,所以我在 stackoverflow 中搜索了可能的解决方案。
这是示例 View 模型类:
public class MyViewModel
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public IEnumerable<Phone> Phones { get; set; }
}
到目前为止我所读到的,解决方案是:
ScriptIgnoreAttribute
在System.Web.Script.Serialization
在引用属性 - 我不
真的很想这样做,因为我
不想添加对
我的 POCO 项目中的 System.Web
但这不会在我的 Phones 对象上产生循环异常吗?或者我会为我的 Phone 对象创建一个特殊的类?这似乎是很多不必要的代码。
你会投票给哪一个,为什么?
最佳答案
使用 View 模型和 AutoMapper在您的域模型和您将发送到 View 的 View 模型之间进行映射。通过这种方式,您可以完全控制将哪些属性发送到 View ,从而减少服务器和客户端之间发送的数据量。也因为现在您正在使用 View 模型,您的代码对域实体中的修改更具弹性。如果你修改它们,只有映射层会受到影响,因此你永远不需要触摸你的 Controller 或 View 。
所以我的建议是下载 AutoMapper,阅读文档并开始使用它。相信我,这改变了生活。
关于.net - EF 4.1 + MVC + JSON 循环引用异常的最佳解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622430/