C# EF6和x27;嵌套';DbContexts-这会导致问题吗
下面的例子将说明我的问题:C# EF6和x27;嵌套';DbContexts-这会导致问题吗,c#,.net,entity-framework,C#,.net,Entity Framework,下面的例子将说明我的问题: namespace ConsoleApplication1 { class Program { static void Main(string[] args) { UserService.CreateUser("NewUser"); } } public static class UserService { public static void CreateUser(string userName) {
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
UserService.CreateUser("NewUser");
}
}
public static class UserService
{
public static void CreateUser(string userName)
{
// DB Context created to CREATE the new user
using (var db = new TestEntities())
{
User userToAdd = new User();
userToAdd.name = userName;
userToAdd.jobTitle = JobService.LookupJob(userName);
db.Users.Add(userToAdd);
db.SaveChanges();
}
}
}
public static class JobService
{
public static string LookupJob(string userName)
{
// 'nested' using, which opens up a new connection to 'read'
using (var db = new TestEntities())
{
return db.JobTitlesNames.Single(a => a.userName = userName).title;
}
}
}
public class TestEntities : DbContext
{
}
}
这是一个非常棘手的例子,我有一个更大规模的场景。我想我的问题是:这种“嵌套”DbContext创建方法是否会在大规模应用程序中导致应用程序/sql问题。我知道这种结构是不好的做法,通常每个业务事务都应该使用相同的DbContext(在本例中,业务事务正在创建一个新用户),但是如果“嵌套”DbContext只用于读取数据,而不进行修改,这仍然是危险的吗
我所拥有的真实世界系统大量使用这种结构,偶尔会降低到4-5个嵌套级别。我遇到了(这里不打算详细讨论,这个问题更多的是理论)数据库读取/提交问题,我想知道这是否是原因
谢谢