使用存储库模式的 ASP.NET MVC

2024-04-29

目前,我在所有操作中使用 EF 并直接使用其数据上下文,但自从我开始阅读有关松散耦合和可测试性的内容后,我认为这不是最好的方法。在开始重构所有当前代码之前,我试图了解所有的优点和缺点。

问题一:考虑到每个实体都需要自己的存储库,因此必须设置自己与数据源的连接(假设使用 EF 的数据库),如果我需要单个页面上 5 个不同实体的数据,这会不会带来大量开销?

问题2:我在网上找到的所有示例中还看到,大多数人(甚至像 shanselman 这样的人)使用由 LINQ 或 EF 生成的实体类来实现存储库模式,这是否违背了存储库模式的目的关于松耦合?另一方面,替代方案是什么,将 POCO 类与 AutoMapper 等结合使用? (这让我有点害怕)

我希望一些人能够对此有所了解,因为我现在有点困惑存储库模式是否是网站的正确选择。


你可以阅读这本书 https://rads.stackoverflow.com/amzn/click/com/1430228865。有一个使用存储库模式和 LINQ 的好例子。
还有这篇文章将存储库和工作单元模式与 Entity Framework 4.0 结合使用 http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx?wa=wsignin1.0.

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

使用存储库模式的 ASP.NET MVC 的相关文章

  • 临时数据持久化

    我一直在与TempData最近面临一个令人困惑的案例 假设TempData在以下操作中创建 public ActionResult MyAction1 myTempData TempData myTempData 预计将在以下 Action
  • 单个控制器站点的 ASP.NET MVC 路由

    我正在尝试创建一个简单的网站 基本上它有一个控制器Home控制器 该控制器有一个动作Index需要一个string作为参数 这是一个目录 并使用该 目录 来完成其工作 我不知道如何创建一个通用的捕获所有路由 将每个 URL 发送到此一个操作
  • 实体框架代码优先 - 外键约束问题

    我是 EF 代码优先主体的新手 目前不知道该怎么做 我有 2 个 POCO 类 public class Problem public int ProblemID get set public int UserID get set publ
  • 在 ASP.NET 中实现“记住我”功能

    实施的最佳方式是什么 remember me ASP NET 网站上的功能 我应该使用自定义cookie还是有更简单的方法 您是否使用内置的AuthenicationASP NET 提供的服务 如果是这样 那就很容易了
  • 运行代码隐藏的表行 onclick 事件

    我继承了一个 ASP NET 项目 该项目的 HTML 设计很糟糕 在一个部分中 tr 标签用标签包裹起来 以允许 单击该行查看信息 功能 代码是 tr
  • aspx 页面中的代码是否会在 Web 应用程序中编译?

    首先我要说的是 如果有人知道一篇谈论这个主题的好文章 请指出我 aspx 页面中的代码 位于 标记之间 是否在 Web 应用程序中进行编译 或者是否将其视为标记 您可以在不重新编译解决方案的情况下更改它 编译是否只编译 cs和designe
  • Response.Write - Internet Explorer 中的文件名编码错误

    我使用以下代码将文件从服务器发送到客户端 Response AppendHeader content disposition attachment filename FileName Response ContentType MimeTyp
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • Entity Framework 6 多对多想要插入重复行

    不应该这么难 我准备放弃EF了 我的模型有周刊版本 每个版本可以有许多分类广告 每个分类可以出现在一个或多个版本中 我的模型 public class Classifieds Key DatabaseGenerated DatabaseGe
  • Blazor WeatherForecast 示例如何工作?

    Blazor 的 Hello World 项目模板包括天气预报示例 除了计数器增量示例之外 我用这个来看看幕后发生了什么 我似乎无法弄清楚 基本上 如果我注释掉获取天气 json 数据的代码行 那么我会无限期地看到 正在加载 到目前为止是有
  • 实体类型处于“影子状态”意味着什么?

    在我的 ASP NET Core 1 0 MVC6 EF7 Web 应用程序中 我添加了一个迁移 该迁移添加了新的相关表 和相应的模型 我有以下模型快照 DbContext typeof ApplicationDbContext parti
  • 依赖注入:没有为此对象定义无参数构造函数

    我正在尝试使用依赖项注入 NET Framework 4 6 ASP NET MVC 但收到错误 No parameterless constructor defined for this object 如果我还提供一个无参数构造函数Hom
  • 自定义模板化 ASP.NET 控件的双向数据绑定

    这个问题最初是关于让双向绑定工作的 但由于缺乏具体的答案和其他方面的进展 我一直在更新它 你可以检查编辑历史记录 但我认为这对于明晰 下面列出的代码允许将单个对象双向数据绑定到模板化控件 我想以最简单的方式扩展此示例 以允许针对最根对象的复
  • 如何找出 ModelState 的哪个键有错误

    当 ModelState IsValid 为 false 时 如何确定 ModelState 中的哪些键包含错误 通常我只需将鼠标悬停在 ModelState Values 列表中 逐项检查错误计数 gt 0 但现在我正在处理一个包含一些复
  • ASP.NET MVC 5 属性路由:Url.Action 返回 null

    我在重构我们的支付处理操作方法 由我们的第 3 方在线支付提供商调用 时遇到问题 我们有一个产品控制器 Authorize and RoutePrefix products 类级别的属性和操作方法 包括以下内容 Product string
  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • SQL Server 2008 GUID 列全为 0

    我希望这是我做的一个简单的傻事 我的数据库中有一个表 设置如下 column name widget guid data type uniqueidentifier allow nulls false default value newid
  • asp.net mvc jquery 下拉验证

    我如何使用不显眼的 javascript 验证下拉列表 作为所需验证器的验证文本框 但它不适用于下拉列表 需要更改不显眼的 js 文件吗 或者还有其他选项来验证下拉列表吗 我想在我的 javascript 中检查 form validate
  • App_offline.htm、CSS、图像和 aspnet_isapi.dll

    因此 我正在开发的网站正在使用 urlrewriting 与 aspnet isapi dll 配合 所有内容都映射到它 我放置了 app offline htm 文件 所有文本均显示 但是 CSS 或图像未提供 我猜测由于通配符映射而不是

随机推荐

  • Indexeddb 添加新值而不是更新现有值

    当尝试更新其中的记录时索引数据库使用put方法 看起来是创造了新的价值而不是改变 根据MDN https developer mozilla org en US docs Web API IDBObjectStore put这是更新记录的方
  • Rails Turbolinks 长请求不显示页面加载

    在 Rails 中使用 Turbolinks 如果请求花费很长时间 无论是预期的还是非预期的 浏览器都没有通常的提示来显示任何事情正在发生 我创建了一个要点 它使用加载对话框来解决此问题 如果请求花费的时间超过 500 毫秒 这是可配置的
  • 是什么导致 OS X 应用程序无法打开并出现错误“LSOpenURLsWithRole() 失败,错误 -10810”?

    我正在为 OS X 开发一个非常简单的应用程序包 我的操作系统版本是 10 7 5 本例中的应用程序是一个 shell 脚本 Kerkerkruip app Contents Info plist https github com i7 k
  • 从 MySql 迁移:MariaDB 服务器意外关闭客户端连接

    由于许可 商业使用原因 我们正在从 MySql 迁移到 MariaDB 我们已经成功用 MariaDB 客户端 jar 替换了 MySql 连接器 jar 第一次更改 现在正在尝试用 MariaDB 服务器替换 MySql 服务器而不更改数
  • mvc3 中的小数错误 - 该值对于字段无效

    我正在关注 ASP NET MVC 3 入门 1 我无法添加 编辑 Price 9 99 或 9 99 的值 它说 值 9 99 对 Price 无效 和 价格字段必须是数字 如何解决这个问题 Model public class Movi
  • Xamarin 中的 Task.ConfigureAwait(false) - 安全使用/建议使用?

    经验法则是 如果它不是与 UI 相关的方法 请使用Task ConfigureAwait false 如果我有一个接受接口的 PCL 核心库怎么办IUIAccess 核心库中的视图模型有一个方法 public Task ViewModelL
  • 左/右旋转进位的实际用途

    循环左进位和循环右进位指令有哪些实际用途 在我的汇编课上 我们无法想出一个有用的好例子 如果要将位从一个操作数移出并移入另一个操作数 SHL EAX 1 move sign bit of EAX RCL EDX into LSB of ED
  • 为什么我不能声明对可变对象的引用? (“引用不能声明为可变的”)

    假设我们有一个test cpp如下 class A class B private A mutable a 汇编 gt gcc test cpp test cpp 6 20 error reference a cannot be decla
  • 相对于父元素的边框框调整子元素的大小

    如果我以百分比设置子元素的大小 则大小将相对于父元素计算内容框 http www w3schools com css css boxmodel asp 独立于我已经设置了它的事实box sizing财产给border box 所以如果我有这
  • 初始化影子变量

    标准中是否有任何内容定义从它隐藏的变量初始化变量 例如 int i 7 int i i Visual Studio 2013 允许这样做而不发出警告并按预期工作 内在i变量是 7 然而 Clang 和 GCC 给我一个警告 关于从自身初始化
  • 多次发生 Web 服务错误

    在许多机器 使用 Asp net 1 和 2 上 我们看到以下带有随机文件名的错误 使用 dll每次我们尝试进行 Web 服务调用时都会生成此扩展名 过去我们不得不重新安装asp net这似乎已经解决了问题 然而 有一次我们尝试获取命令提示
  • 序列化/反序列化 LinkedHashMap (android) java

    所以我想将 LinkedHashMap 传递给意图 SEND THE MAP Intent singlechannel new Intent getBaseContext singlechannel class singlechannel
  • CSS 中 img 上的 box-shadow

    是否可以在CSS中为img标签添加阴影 我尝试过 但似乎不起作用 我是正确的还是我的代码搞砸了 CSS image carousel img padding right 14px display block float left box s
  • 在 Databricks 中的 pyspark 数据帧上下载 punkt 时出现 NLTK 查找错误

    我试图通过对 Databricks 中的 pyspark 数据框应用余弦相似度来查找文本列 标题 标题 的相似性 我的函数称为 cosine sim udf 为了能够使用它 我必须进行第一次 udf 转换 将函数应用于 df 后出现查找错误
  • 提升解析器中的 Spirit 段错误

    我一直在尝试将我在本科编译器中编写的一些 lex 和 yacc 代码转换为精神代码以学习精神 我发现了一个我似乎无法弄清楚的段错误 我这样写了词法分析器 namespace lex boost spirit lex enum Tokens
  • 字符串包含相同的字符但仍然不同[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 txt 文件并使用每个句子作为团队的名称 同时使用该名称查找另一个 txt 文件以获取其内容 所有 txt 文件都位于我的资产文件夹的根目录中 第一个 txt 文件工作正常 我使用assetm
  • 更窄的类型不能分配给其他类型

    有两种类型 type ExcludeString
  • 如何计算 MySQL 中日期的平均值?

    如何在 MySQL 中计算日期之间的平均值 我对时间值 小时和分钟更感兴趣 在桌子上有 date one datetime date two datetime 执行如下查询 SELECT AVG date one date two FROM
  • UIVisualEffectView 无法在 iPhone 6 上运行

    看来UIVisualEffectView在 iPhone 6 6S 上运行时不会模糊背景 我只在网上看到一个人提到过这一点苹果开发者论坛 https forums developer apple com thread 16754 但这里什么
  • 使用存储库模式的 ASP.NET MVC

    目前 我在所有操作中使用 EF 并直接使用其数据上下文 但自从我开始阅读有关松散耦合和可测试性的内容后 我认为这不是最好的方法 在开始重构所有当前代码之前 我试图了解所有的优点和缺点 问题一 考虑到每个实体都需要自己的存储库 因此必须设置自