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

2024-01-13

我使用 EF 4.1 Database First 方法,使用 T4 模板在单独的程序集中生成 POCO 类。我有用于获取数据的存储库,以及用于与 UI 通信的服务层。

我试图制作级联下拉菜单。 我是 MVC 和 EF 4.1 的新手,因此我在 stackoverflow 中搜索了可能的解决方案。

这是示例视图模型类:

public class MyViewModel
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public IEnumerable<Phone> Phones { get; set; }
}

到目前为止我读到的解决方案是:

  1. Use ScriptIgnoreAttribute in System.Web.Script.Serialization在 引用属性 - 我不 真的很想这样做,因为我 不想添加参考 我的 POCO 项目中的 System.Web

  2. 在 EF 4.1 DbContext 中禁用延迟加载 - 我不确定是否要在我的项目中使用 Include

  3. 返回匿名类型 - 当我的项目变大时,这种方法会遇到问题吗?

  4. 使用 ViewModel - 假设我有一个可以拥有 1 部或多部手机的客户。在第一个下拉列表中,您可以选择客户,在第二个下拉列表中,您可以显示他的所有电话。
    但这不会在我的 Phones 对象上生成循环异常吗?或者我会为我的 Phone 对象创建一个特殊的类?这似乎有很多不必要的代码。

  5. 使用 AutoMapper - 没有使用 AutoMapper 的经验,所以我不知道它有多复杂。

您会投票给哪一个?为什么?


使用视图模型和自动映射器 http://automapper.org/在域模型和要发送到视图的视图模型之间进行映射。通过这种方式,您可以完全控制发送到视图的属性,从而减少服务器和客户端之间发送的数据量。另外,因为现在您正在使用视图模型,所以您的代码对域实体中的修改更具弹性。如果您修改它们,只有映射层会受到影响,因此您将不需要触摸控制器或视图。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF 4.1 + MVC + JSON 循环引用异常的最佳解决方案? 的相关文章

  • 如何隐藏 Windows 窗体中控件的大小调整手柄?

    我有一个 UserControl 想在设计时隐藏调整大小手柄 就像 TextBoxControl 一样 它只有两个手柄 左手柄和右手柄 文本框的高度是固定的 除非你说它是多行的 在这种情况下 文本框会显示所有九个大小调整手柄 您需要实现一个
  • 如何拦截 .Net 中第三方库对非虚拟方法的调用?

    我认为我需要的是 net 人们称之为 透明动态代理 的东西 但到目前为止我所看到的所有实现 Castle DynamicProxy Spring NET AOP 等 都要求我至少执行以下操作之一 将拦截的方法声明为虚拟方法 包装类并创建包装
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • 中继命令和无参数执行方法

    我目前正在学习 WPF 和 MVVM 我想我已经了解了大部分内容及其工作原理 但我在使用 RelayCommand 或 DelegateCommand 时遇到了一些我不明白的问题 我认为这与代表的工作方式有关 请注意 下面的代码目前仅处于测
  • 从 VS.NET 2008 转换到 2010 时 Windows 服务安装项目出现问题

    我正在尝试将解决方案从 VS NET 2008 转换为 2010 该解决方案包括一个 Windows 服务项目和一个安装 Windows 服务的安装项目 我在编译安装项目时遇到问题 我已经尝试按照教程从头开始几次here http msdn
  • 如何将 ConcurrentDictionary 转换为字典?

    我有一个 ConcurrentDictionary 对象 我想将其设置为 Dictionary 对象 不允许在它们之间进行转换 那么我该怎么做呢 The ConcurrentDictionary
  • 如何暂时暂停实时数据图表的绘制更新

    我想要 暂停 图表的系列更新来完成一些工作 就像我有一个按钮 当我单击它时 它将暂停图表更新 然后当我单击恢复按钮时 它将更新系列中的所有暂停点 我知道关于 chart1 Series SuspendUpdates 但它似乎不适合我 我使用
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera
  • .NET 组件和 COM 组件有什么区别

    NET 组件和 COM 组件之间有什么区别 有时我们使用 NET 组件包含在我们的项目中 有时我们包含 COM 引用 背后的想法是什么 NET 组件是托管代码 内存处理已为您完成 COM http en wikipedia org wiki
  • jq - 按值排序

    我有以下结构 ID XX guid 1 ID YY guid 2 我尝试过运行 jq sort by guid conn json 但是我收到一个错误 Cannot index string with string guid 请您告诉我如何
  • 我如何移动粘性/捕捉 wpf 窗口

    当我移动 主 窗口时 我想移动两个或更多粘性窗口 我想做这样的事情 private void MainWindow PreviewMouseMove object sender MouseEventArgs e if e LeftButto
  • 如何创建一个没有边框且只能通过手柄调整大小的 WPF 窗口?

    如果你设置ResizeMode CanResizeWithGrip 在 WPF 上Window然后右下角会出现一个调整大小的夹点 如下 如果你设置WindowStyle None 标题栏也会消失 但灰色斜边仍然保留 直到您设置ResizeM
  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • Azure 网站中的 404 处理

    我在 Azure 上有一个 MVC 网站 我已经编写了一个控制器操作来代表资源 该操作应该返回 HTTP 404 但正文内容应该是一些 HTML 我在其中解释了 404 的原因 这是作为一个标准操作实现的 该操作设置Response Sta
  • JavaScript:根据文化格式化数字/货币,例如 .NET String.Format()?

    这似乎是一个有人在 2009 年就已经解决的问题 但我找不到一个像样的 JavaScript 库 它需要这样的数字 12345 58 并根据特定区域性 即 nl nl 或 ISO 货币代码正确设置其格式 dojo 表现出了希望 但它默认不包
  • PostgreSQL:有效地将 JSON 数组拆分为行

    我有一个表 表 A 其中包含一个包含 JSON 编码数据的文本列 JSON 数据始终是一个包含一到几千个普通对象的数组 我有另一个表 表 B 其中有几列 包括数据类型为 JSON 的列 我想从表 A 中选择所有行 将 json 数组拆分为其
  • 将类转换为 JSONObject

    我有好几堂这样的课 我想将类转换为 JSONObject 格式 import java io Serializable import com google gson annotations SerializedName public cla
  • 从嵌入 C# 的浏览器控件获取 HTML 源代码

    我有一个嵌入在 C Windows 应用程序中的浏览器控件 我想获取渲染的 HTML 可能已被 javascript 修改 而不是原始 HTML 有什么建议么 您可以获取 HTML 并确实设置它 使用WebBrowser DocumentT
  • ViewModel 的列表在操作中为 null

    我正在开发我的第一个 ASP NET MVC 3 应用程序 我有一个如下所示的视图 model IceCream ViewModels Note NotesViewModel using Html BeginForm Html Valida
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque

随机推荐

  • 在 Typescript 中是否必须使用函数的结果值说明符?

    我想指定函数的返回值必须使用打字稿来使用 C 中有一个属性 nodiscard Typescript 中有类似的属性吗 Example function setSomeFields someThing MyClass const other
  • 如何获取JQuery中复选框的值?

    我正在使用 JQuery 来发布表单 我无法从该字段获取正确的值
  • Keras 序列模型的多个嵌入层

    我正在使用 Keras 张量流后端 并且想知道如何将多个嵌入层添加到 Keras 顺序模型中 更具体地说 我的数据集中有几列具有分类值 我考虑过使用 one hot 编码 但确定分类项的数量有数百个 导致一组大且过于稀疏的列 在寻找解决方案
  • 如何在Redis中进行搜索?

    在 MySQL 中我有一个表名为 cities其中包括 2 列 name and population 然后我得到搜索结果 SELECT FROM cities WHERE name LIKE Bu ORDER by population
  • com.parse.ParseException:java.lang.IllegalStateException:尝试查找不存在的uuid

    我在我的应用程序中使用 parse android SDK 这是我的登录活动 public class LoginActivity extends Activity EditText username password Button log
  • OpenCV - 去除图像中的噪声

    我这里有一张带有表格的图像 在右侧的列中 背景充满了噪音 如何检测有噪声的区域 我只想在有噪音的部分应用某种过滤器 因为我需要对其进行 OCR 任何类型的过滤器都会降低整体识别率 什么样的滤波器最能去除图像中的背景噪声 正如我所说 我需要对
  • 如何取消 RXJS Effects 中发出的角度 http 请求

    我想取消 Angular 8 中 RXJS 效果中发出的 http 请求 Effect getReport this action pipe ofType ActionTypes GET WIDGET map toPayload merge
  • 在访问者模式中使用accept()

    我正在考虑使用访客模式 我看到的一些示例建议在每个 Element 子类中使用 Accept Visitor 函数 该函数的想法只是为了让访问者可以访问包含多态类型的集合吗 在这段代码中 我使用访问者进行两种类型的累加 并且不需要accep
  • java的内存分配

    问题 我已设置 Xms512m 和 Xmx1024m 来运行应用程序 实习生使用 C 本机层执行其他操作 运行应用程序时出现 OutOfMemory 异常 我需要知道 C 使用哪个内存 即来自分配的内存 Xms512m 和 Xmx1024m
  • PHPUnit 分段错误 11

    我今天早上尝试运行 PHPUnit 它产生了 Segmentation Failure 11 错误 使用命令phpunit unit 如果我使用 Selenium 在功能测试中运行 PHPUnit 那么一切都会正常 只有单元测试受到影响 我
  • Android自定义EditText(货币格式)

    我有自定义的 EditText 它可以转换输入 也可以反转它 但是 它始终会使输入成为十进制 并在输入后面带有 1 或 2 个值 现在我正在制作一些计算应用程序 它需要整数 如何使这个自定义 EditText 仅接受整数输入和输出 代码 T
  • C++:IF 语句退出时出现段错误

    这次我将连同所有代码一起重新发布 我希望至少在一段时间内不关闭该帖子 我显然不是专家 以前从未遇到过类似的事情 但我确实认为这对其他成员很有用 我尝试了评论并同意错误与破坏有关 但找不到位置 我已在底部的评论中包含了段错误的位置 我没有 I
  • flutter:设置SnackbarAction标签的字体

    有没有办法在 flutter 中设置 SnackBarAction 的字体 好像用的是系统默认字体 SnackBarAction label my text how to sent font onPressed 您可以在 ThemeData
  • Angular JS 1.3.11:参数“MyController”不是函数

    我是角度新手 我有一个问题 我使用 1 3 11 版本的 Angular 我写了一个简单的 html 代码 使用简单的角度 但出现以下错误 参数 MyController 不是一个函数 在 AngularJS 中未定义 重复 html代码是
  • 使用jquery上传文件

    我想用ajax上传文件 这是我的代码 php html
  • 删除 ARC 后 Cocoa 中的观察员

    到目前为止 我一直在dealloc 中删除观察者 通知或KVO 既然 ARC 中不再有 dealloc 那么推荐的方法是什么 dealloc 不会在 ARC 下消失 ivar 释放和超级调用方面是自动处理的 如果这就是您要做的全部 则允许您
  • 如何使用 vue-gtag 让 Google Analytics GA4 识别我的 nuxt 网站?

    我有一个Nuxt js https nuxtjs org 我想用 Google Analytics 跟踪的网络客户端 我正在使用vue gtag https github com MatteoGabriele vue gtag像这样 plu
  • 在 Angular 中延迟加载图像的最简单方法是什么

    我有一个应用程序 允许通过键盘的右 左箭头键对大型文本数据集进行分页 显示的数据还包含图像 我想在用户快速分页数据时延迟这些图像的加载 1 2 秒 一旦用户停止在某个页面 所有图像都应该 延迟 加载 我尝试将此小提琴适应我的应用程序 但没有
  • C++ 在函数中仅使用一个默认参数

    我如何只使用第三个参数 第一个和第二个参数必须是默认值 像这样 double func const double a 5 const double b 6 const double c 7 int main cout lt lt A lt
  • EF 4.1 + MVC + JSON 循环引用异常的最佳解决方案?

    我使用 EF 4 1 Database First 方法 使用 T4 模板在单独的程序集中生成 POCO 类 我有用于获取数据的存储库 以及用于与 UI 通信的服务层 我试图制作级联下拉菜单 我是 MVC 和 EF 4 1 的新手 因此我在