- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
干杯!我对使用 Unit of Work with Repository 有一些疑问。特别是 Entity Framework 中子上下文的作用。我搜索了很多关于这个主题的信息,但我发现的只是不同类型的使用模式,我很困惑,我无法理解主要思想。
1.应该在哪里实现配置和保存?- 是否正确实现了DbContext的Inheritance类中的Disposable?之后是在 Repository 和 Unit of Work 中还是在 Uni fo Work 中实现?
-将方法保存在工作单元或存储库中的何处?
我的存储库将是通用的我的代码在架构风格和其他细节方面是否正确?请告诉我我的想法是否错误。
interface IRepository : IDisposable
{
void Create();
void Delete();
void Update();
void Get();
T getSomeByExpression()
...Some another costum operations
...should I remember about Save here?
}
class Repository : IRepository
{
SomeContext context = new SomeContext();
...Using using(context = new SomeContext()){} in functions??
...
....Disposing?
}
interface IUnitOfWork : IDisposable
{
...Which methods I should realize?
Commit()
Save()
...Need some another methods like rollback, Attach() Add() or Dispose or something else?
}
class UnitOfWork
{
...Collection of Repository
}
在逻辑级别的工作单元之后使用?请帮助我理解这个主题。
我想知道,如何正确地同时使用工作单元和存储库模式,尤其是包括 DBContext。我还想知道在何处使用一些操作,例如 Dispose。哪些操作一般应该在 UnitOfWork 中,Save 等。如何在存储库中配置上下文?
最佳答案
这是一个 great article关于使用 MVC 实现工作单元。
我通常会在业务交易完成后处理该设备。例如,如果操作是创建一个父级、一些子级并附加它们,我会在完成后立即处理。
添加了与上述相关的更多详细信息:
在重读你的问题时,听起来你想要更多关于工作单元理论的信息而不是实际实现,我很抱歉。
这是一篇更好的文章 on MSDN与此相关,但我会为您总结。
According to Martin Fowler, the Unit of Work pattern "maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems."
通常,我使用工作单元模式将所有相关的存储库集中在一起,以解决并发问题,同时仍然保持存储库独立。
One of the best ways to use the Unit of Work pattern is to allow disparate classes and services to take part in a single logical transaction. The key point here is that you want the disparate classes and services to remain ignorant of each other while being able to enlist in a single transaction.
我不确定我是否完全理解您的问题,但我认为您是在问什么应该管理工作单元的生命周期?
这是另一个 SO post与此相关,但摘要是目前拥有工作单元的任何内容,并且与您如何设置工作单元的范围有关。例如,它可以是业务命令,也可以是 MVC 操作。
你的意思是,你应该在哪里处理 DbContext?我认为它应该在工作单元中。如果您在单个工作单元中创建/处理多个上下文,也许您应该将它们分成 2 个不同的单元。
您的工作单元是处理上下文和事务,并且应该包含防止重复更新的逻辑,因此您的保存功能应该由您的工作单元控制。
关于c# - 使用 Entity Framework 的 Repository 和 Unit Work 模式正确处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11809979/
我想避免创建 std::thread 的开销,因此我要实现一个线程池。我正在为一个设计决策而苦苦挣扎: 工作队列中的工作是否应该能够将工作添加到工作队列中?如果是,如何? 问题出现了,因为我想让我添加
color 属性正常工作,但其他两个属性(font-size 和 text-shadow)不起作用。当链接被访问时,它的字体大小应该减小到 20 px 并且应用 text-shadow 属性,但它没有
我已经安装并配置了 supervisor。 ps -ax 显示 10 个进程,例如:php/home/vagrant/Sites/mysite/artisan queue:work --tries=1
我对 php artisan queue::work 命令感到不安。 我的命令不起作用,但我的作业已插入作业表但从未执行。 我正在为队列使用 mongodb 驱动程序。 我做错了什么,请给我建议。 最
为什么我可以找到很多关于“工作窃取”的信息而没有关于“工作耸肩”作为动态负载平衡策略的信息? 通过“工作耸肩”,我的意思是将多余的工作从繁忙的处理器转移到负载较低的邻居上,而不是让空闲的处理器从忙碌的
首先,我正在为 MySQL 使用 DATE_ADD 函数。当试图在 php 中使用 $sqlA 时,由于某种原因它说语法错误(主要是 WHERE 之后的区域)。为什么? $sqlA = "SELECT
a:hover { color: #237ca8 !important; font-weight: bold; } a:active { color: #cccccc !imp
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this q
我试图让只能使用 Tab 键的用户可以访问我的网站。我遇到的问题是,当我尝试使用 tab 键选择 float 的 div 时,不会触发 :focus in css;我不知道为什么它没有被触发。鼠标悬停
我在尝试将 2 个 div 并排放置时遇到了问题。 display: inline 它会删除我的边框并且不会将两个 div 放在同一行上。 请指教: .gig { outline: 1px s
这是 fiddle :http://jsfiddle.net/j9Gmx/ 我怎样才能得到最小高度:100%;上类? 最佳答案 它正在 工作,但由于 div 的父级(正文)没有高度,100% 基本上是
我正在使用 Flutter WebRTC 来创建 P2P 视频通话。 我遇到了一个与网络相关的问题:我已经完成了应用程序,但它只适用于移动数据。 将网络更改为WiFi时,它不起作用并且连接状态挂起Ch
我是 JavaScript 和 jQuery 的初学者。我的 css 和 JavaScript 代码位于 html 文件外部。这个问题已经有了答案,我尝试了所有代码,但滚动不起作用。我不知道我错过了什
我正在使用 Sprin AMQP 的rabbittemplate 通过 RabbitMQ 发送和接收消息。我能够发送和接收消息,但是,我想优先处理消息。 例如,如果我推送 1000 条消息,假设奇数消
我已经在 WorkManager 中加入了一个PeriodicWork,并希望每次完成时都获取它的 Worker 的输出数据,但以下代码似乎不起作用,因为 Log 消息没有出现在 Logcat 中:
我有一个名为 areaOne 的 AngularJS 指令。当我使用 template 时,会显示模板,但当我在 area1.js 中使用 templateUrl 时,不会呈现模板 HTML。 我在这
“:after”选择器在应用于带有 FF 和 IE 的输入时不起作用 input:after { content: "title"; } 而它正在处理 p、a 等。 这是一个错
下面是适用于 oracle 但不适用于 PostgreSQL 的 Sql 查询。 select count(*) from users where id>1 order by username; 我知
position?:fixed 在 chrome 浏览器上不工作,但在 firefox 中工作正常。 我有一个侧边栏可以停止滚动并固定在顶部。它在 firefox 中运行完美,但在 chrome 中,
我有一段代码无法在 Firefox 中运行。当按钮悬停时,.icon 图像不会改变。它在 Chrome 中完美运行。 button.add-to-cart-button .button-left .i
我是一名优秀的程序员,十分优秀!