gpt4 book ai didi

c# - 如何使用 Entity Framework 4 在桌面服务器端应用程序中正确实现每个范围和存储库的工作单元?

转载 作者:行者123 更新时间:2023-11-30 17:54:52 25 4
gpt4 key购买 nike

我在 IoC 容器工作单元模式中实现和注册时遇到问题,问题如下:在服务器端客户端-服务器应用程序上,我需要访问我正在使用 Entity Framework 4 ORM 的数据库,并且我需要根据客户端应用程序对数据库的请求创建新的 DataContext,这类似于 Web MVC 应用程序。我意识到我需要使用工作单元模式,目前我是这样实现的:

    void SomeMethod()
{
using (var repository = _repositoryFactory.Create())
{
int id = 1;
var entity = repository.GetById(id);
// some code

repository.SaveOrUpdate();
}
}

其中 _repositoryFactory 在 IoC 中注册为 Single instance 并返回 Repository 的新实例DataContext 被注入(inject)到 Repository 中

 abstract class Repository<TEntity> : IRepository<TEntity> where TEntity : EntityBase 
{
private readonly IDataContext _context;

protected Repository(IDataContext context)
{
_context = context;
}
}

作为 IRepository 作为 IDataContext 在 IoC contanier 中注册为每个依赖项的实例,以及我需要什么我想通过以下方式使用工作单元:

 void SomeMethod()
{
using (var unitOfWork = _unitOfWorkFactory.Create())
{
int id = 1;
var entity = _repository.GetById(id);
// some code

repository.Commit();
}
}

如何在 IoC 中正确实现此逻辑和注册,或者在这种情况下我应该考虑其他方法,解决此问题的最佳方法是什么?

最佳答案

不要混淆生命周期。存储库工厂也可以限定范围。性能损失很小。

通过进行该更改,您可以简单地在存储库工厂构造函数中采用工作单元。

关于c# - 如何使用 Entity Framework 4 在桌面服务器端应用程序中正确实现每个范围和存储库的工作单元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15614154/

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