gpt4 book ai didi

c# - 在 Entity Core 中调用存储过程时创建新的 DbContext 还是使用注入(inject)的 DbContext?

转载 作者:行者123 更新时间:2023-11-30 23:16:31 27 4
gpt4 key购买 nike

在 Entity Core 中执行存储过程(使用 ADO 方法)的正确方法是什么?

我应该使用注入(inject)的 dbcontext 还是应该创建一个新的?

public class ContactController
{
private readonly MyDbContext _context;


public ContactController(MyDbContext context)
{
_context = context;
}


public IActionResult Search(ContactSearchModel csm, int page)
{
//execute using the injected _context?
using (var command = _context.Database.GetDbConnection().CreateCommand())
{
//...
}

//or create a new context?
using (var newContext = new MyDbContext())
{
using (var command = newContext.Database.GetDbConnection().CreateCommand())
{
//...
}
}

}
}

最佳答案

应该没有任何理由不使用注入(inject)的。

如果您询问只是因为您只是在读取数据并希望它很快,并且您担心跟踪或其他事情,您应该在调用时调用 .AsNoTracking()存储过程的数据库。

一个例子:

var users = _context.Users
.FromSql("EXECUTE dbo.MyUserStoredProc")
.AsNoTracking()
.ToList();

请参阅 Raw SQL 上的这些 EF Core 文档和 No Tracking .

关于c# - 在 Entity Core 中调用存储过程时创建新的 DbContext 还是使用注入(inject)的 DbContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41964842/

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