问题标签 [irepository]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

design-patterns - 存储库和每个实体的存储库

我正在更改企业会计应用程序的架构。我将使用 IRepositoy<TDataModel> 模式,但有一点不同。我将为从基础 IRepository<TDataModel> 派生的每个实体创建一个接口。例如,如果我的实体是客户、产品和订单,那么我将拥有

IClientRepository : IRepository<ClientModel>
IProductRepository : IRepository<ProductModel>
IOrderRepository : IRepository<OrderModel>

使用这种方法的原因是我想在 DAL 中而不是在 BLL 中设置一些域模型的属性 - 例如设置某些实体的 CreationDate (顺便说一句,这样做是否正确?)

我看到了一些 IRepository<> 示例,但找不到任何使用这种组合的东西。我想知道这样做有什么好处吗?完全正确吗?还有什么其他优点和缺点?

提前致谢

0 投票
3 回答
1167 浏览

c# - C# 共享事务和 NHibernate 使用 IRepository

我正在研究使用 NHibernate 实现 IRepository 模式,我有一个问题,我无法在网上回答。

假设我有 3 个存储库,PersonRepository、PersonAddressRepository 和 PersonAccountRepository。现在假设业务逻辑规定存在调用 PersonRepository.Deactivate()、PersonAddressRepository.Deactivate() 和 PersonAccountRepository.Deactivate() 的“停用人员”流程。

我希望能够按照以下方式做一些事情。

这样,如果其中任何一个更新失败,整个过程都会在数据库中回滚。现在我对 NHibernate 的理解是你只能为每个对象创建一个 Session 所以..

这是正确的还是我错了?关于 NHibernate 的多表更新和事务的最佳实践是什么。

提前致谢。

0 投票
1 回答
237 浏览

asp.net-mvc - 一个主要的 asp.net 上的多个部分视图

试图在 asp.net 的主页上放置一个强类型的部分视图,但它似乎不起作用,这是我的代码

新的 asp.net 和部分视图。

控制器 :

存储库:

存储库:

索引页:

任何帮助将不胜感激,请尽快问候T

0 投票
1 回答
156 浏览

wcf - 其他人也可以使用Wcf服务合同吗(nhibernate asp.net)

我想知道如果 wcf 与IRepository

因为 2 个不同的来源将使用同一个合同: - 1 个被 WCF 使用 - 另一个被 Asp.net Nhibernate 使用

所以我想重用相同的合同,而不是制作另一个副本,其中包含一两件东西。

举个例子更容易理解...

简而言之,wcf 是否可以正常工作,因为我没有[OperationContract]向 Irepository 添加任何内容?

0 投票
1 回答
175 浏览

mongodb - MongoDB IRepository 数据库连接

这就是我到目前为止关于我的 IRepository for MongoDB 的内容,我想知道我是否在正确的路线上?

这样我就可以创建从这里继承的 PhotoRepository 类并提供所需的 _collection 名称。

我只想确保在正确的位置以正确的方式打开与数据库的连接。

0 投票
1 回答
1653 浏览

c# - 在实体框架中使用 DbModelBuilder 时如何管理连接?

我正在为 EF4 Fluent 模式编写一个IRepositoryIUnitOfWork包装器。

在此设计中,DbCompiledModel每个应用程序生命周期创建一次(如 NHibernate ISessionFactory)。和 all 一样,DbCompiledModel需要一个现有的数据库连接DbContexts

这是DbCompiledModel工厂:

一旦创建,可以使用创建DbCompiledModel一个新的DbContextnew DbContext(connection, compiledModel, true)

所以我面临两种选择:要么DbConnection在整个应用程序生命周期中共享一个,要么DbConnection为模型构建过程创建一个短期的,以及一个新的DbConnection每当DbContext创建一个。

有没有更有效的方法来管理我忽略的连接?

0 投票
1 回答
234 浏览

entity-framework - 带有 IRepository 模式集合的 POCO Entity Framework 4 在删除时被修改错误

在我们的 EF 和 POCO 首次设置中,我们有一个 IRepository 模式非常适合我们。但是,我们遇到了一个奇怪的问题,即“集合已修改;枚举操作可能无法执行”。

基本上我们有一个带有 ObjectSet 的存储库,如下所示:

以及 IRepository 类上的删除方法,其实现如下:

这一切都非常简单,到目前为止我们还没有遇到任何问题,但是每当我们尝试删除集合的对象时,都会出现此错误。如果我在删除方法上放置一个断点,将鼠标悬停在 ObjectSet 上并展开结果以便全部加载,那么 DeleteObject 工作正常,但如果所有项目都没有从 ObjectSet 加载,它会失败并出现集合修改错误。

我设置了一个不使用 POCO 或 IRepository 的测试平台,它工作正常,所以基本上有一些我很明显遗漏的东西。我们非常深入地在多个项目中使用这种模式,人们一直在努力解决它,而不是试图修复它,我认为这不是一个选择。

非常感谢您的帮助或见解。

编辑:

这很奇怪,但是当我从模型中删除某些实体时,这个错误消失了,但是我们有一个巨大的模型,我无法追踪它,因为我首先删除了除了删除中的特定表之外的所有内容。以前有没有人遇到过这种情况,我们正在使用继承表(每种类型),但我无法证明这是问题所在。

第二次编辑:

好的,我从模型中删除了除了每个类型继承实体的表之外的所有内容,并且当我删除除一个派生类型之外的所有类型并尝试从中删除它时,错误发生了。所以我的问题是,在使用每个类型继承的表时,还有其他人遇到过这个问题吗?

0 投票
1 回答
655 浏览

c# - 具有通用工厂模式的 IRepository 模式

我有以下 DBML 修改(我使用 Linq to SQL 作为 DAL)。

有了它,我可以在其他区域更正确地操作我的 Linq 对象。

我刚刚完成了一个 IRepository 模式实现。

这完美无瑕。但是,有时我不知道在编译时我将使用哪个特定的表。为此,我尝试为我的 DebtManager 创建一个简单的通用工厂。

但是它不起作用。它说我不能“隐式转换DebtManager<NEWDEBT>DebtManager<ILinqSQLObject>”,但是如果 NEWDEBT 实现了 ILinqSQLObject,为什么编译器不能识别它?显然我在做一些错误,但我看不到它。

0 投票
1 回答
1147 浏览

sql-server - 如何在 Orchard 中使用 IRepository 和 int 键(不是 IDENTITY)

我正在使用 Orchard IRepository 来管理数据并保存到数据库……这就是我想要做的。

我的课是:

我的迁移:

请注意,Id 不是和 IDENTITY

现在,当我调用 Repository Create 时,执行以下插入:(使用 sql profiler 抓取)

失败是因为它忽略了我的 Id 并假设(错误地)Tables 有一个自动编号键。

这是错误:

如何向存储库解释以查看表并且如果没有身份则不要假设身份以便我可以插入自己的 id?(是的,我在创建之前在对象记录上提供了一个有效的 ID)

编辑:我已经挖掘了一些代码,我认为:

  • 不正确的身份是由于 Fluent NHibernate:自动映射约定

  • Orchard 使用 IAutoMappingAlteration 覆盖不正确的假设

所以我可以改变我的问题:

如何为我的班级定义自定义 IAutoMappingAlteration 以向 Orchard 解释我的 Id 不是身份?

或(换句话说)

如自动映射文档中所述,我可以在哪里找到果园中的“自动映射配置”?

https://github.com/jagregory/fluent-nhibernate/wiki/Auto-mapping

(...“您可以通过覆盖自动映射配置中的 IsId 方法来修改自动映射器发现身份的方式。”...)

0 投票
1 回答
464 浏览

entity-framework - 关于依赖注入、IRepository 和 EF 迁移方案

我对 EF 迁移如何处理我的存储库是通用的( IRepository<>)并由我选择的依赖注入工具在运行时注入的场景感到困惑。您知道数据库是由迁移使用三个元素更新/同步的:

  1. 数据库模型(对象上下文和 DbSet<> 属性)
  2. 迁移文件夹中的迁移类
  3. 已经存在的数据库(如果有的话)

您可以看到一个基本元素是对象上下文及其属性。如果您在没有 dbset 属性的情况下公开 Object 上下文,则 Migrations 使用的过程不会以正确的方式执行。

我有以下项目的解决方案:Core.Entities、Core.RepositoryInterfaces 和 Infraestructure.RepositoryEF、Infraestructure.DependencyResolution 和 UI.WebSite。

如您所知,当我需要存储库时,它们会被注入到类构造函数中:

问题是:由于我的对象上下文没有 dbset<> 属性(我的依赖工具在运行时注入这些存储库),迁移如何更新数据库?

感谢您的宝贵帮助。