2 回答
TA贡献1848条经验 获得超6个赞
另一个答案是无关紧要的,因为它建议我使用 EF,这是我想避免的。
我用存储库模式实现了 Dapper。我没有使用工作单元,因为我认为这样做会导致我不希望出现的性能损失。
这是我实现的原始原型。 https://github.com/lenardchristopher/AdoAspDotNetCoreTest
TA贡献1799条经验 获得超6个赞
我相信您正在使用 aspnet-core,因此使用实体框架作为您的 ORM 将在这种情况下工作。
我同意您将您的存储库注册为一部分,IUnitOfWork
然后将其作为服务添加到您的 DI 容器中,然后您将其注入您的控制器中。
要回答您的第二个问题,我们假设您的SqlUnitOfWork
实现有一个接收DbContext
实例的构造函数。
在 ASP.NET Core 中,它
DbContext
被添加到 DI 容器中,因此在其构造函数中需要或依赖于 DbContext 的任何其他服务都将由 DI 容器自动解析。
首先请记住将您的连接字符串定义appsettings.json
为这样。
然后现在让我们使用该连接字符串向DbContext我们的 DI 容器添加一个对象,并进一步阅读在 EF Core 中配置 DbContext
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Database")));
}
之后,将其他需要我们上下文的服务注册到我们的 DI 容器将非常容易,因为容器将为我们解决该依赖关系。
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IUnitOfWork, SqlUnitOfWork>();
}
希望这能回答你的问题。如果没有,请告诉我。
- 2 回答
- 0 关注
- 377 浏览
添加回答
举报