gpt4 book ai didi

.net - EF 4.1 + MVC + JSON 循环引用异常的最佳解决方案?

转载 作者:行者123 更新时间:2023-11-30 23:47:08 25 4
gpt4 key购买 nike

我正在使用 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; }
}

到目前为止我所读到的,解决方案是:
  • 使用 ScriptIgnoreAttributeSystem.Web.Script.Serialization
    引用属性 - 我不
    真的很想这样做,因为我
    不想添加对
    我的 POCO 项目中的 System.Web
  • 在 EF 4.1 DbContext 中禁用延迟加载 - 我不确定是否要使用 Include 彻底我的项目
  • 返回匿名类型 - 当我的项目变大时,这种方法会出现问题吗?
  • 使用 ViewModel - 假设我有一个可以拥有一部或多部手机的客户。在第一个下拉列表中,您可以选择客户,然后在第二个下拉列表中显示他的所有电话。
    但这不会在我的 Phones 对象上产生循环异常吗?或者我会为我的 Phone 对象创建一个特殊的类?这似乎是很多不必要的代码。
  • 使用 AutoMapper - 没有使用 AutoMapper 的经验,所以我不知道它有多复杂。

  • 你会投票给哪一个,为什么?

    最佳答案

    使用 View 模型和 AutoMapper在您的域模型和您将发送到 View 的 View 模型之间进行映射。通过这种方式,您可以完全控制将哪些属性发送到 View ,从而减少服务器和客户端之间发送的数据量。也因为现在您正在使用 View 模型,您的代码对域实体中的修改更具弹性。如果你修改它们,只有映射层会受到影响,因此你永远不需要触摸你的 Controller 或 View 。

    所以我的建议是下载 AutoMapper,阅读文档并开始使用它。相信我,这改变了生活。

    关于.net - EF 4.1 + MVC + JSON 循环引用异常的最佳解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622430/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com