我有以下示例来说明我的问题:
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创建导致大规模应用程序中的application / sql问题。我知道这种结构是不好的做法,通常你应该为每个业务事务使用相同的DbContext(在这种情况下,业务事务正在创建一个新用户),但是如果'嵌套' DbContext仅用于读取数据,从不修改,是否仍然存在危险?
我所拥有的真实世界系统大量使用这种结构,偶尔会降低到4-5级嵌套。我已经(不打算在这里详细介绍,这个问题更多地围绕理论)数据库读取/提交问题,我想知道这是否可能是路由原因。
由于