我不知道什麼是在這種情況下的最佳實踐:實體框架+「使用」模式的最佳實踐
我有方法,它調用在using語句(一次性數據庫上下文)的一些其他方法,以及其他方法還需要訪問數據庫上下文,所以這是選項1:
using (var db = new Database())
{
// some code here
//calling other function
var cnt = SomeFunction();
}
int SomeFunction()
{
using (var db = new Database())
{
// some code here for example:
return db.Users.Count();
}
}
這裏是選項2:
using (var db = new Database())
{
// some code here
//calling other function
var cnt = SomeFunction(db);
}
int SomeFunction(Database db)
{
return db.Users.Count();
}
注:Database
看起來不便。像這樣:
public class Database : IdentityDbContext<User>
{
public Database()
: base("DefaultConnection", throwIfV1Schema: false)
{
Configuration.LazyLoadingEnabled = true;
}
public DbSet<IdentityUser> AspNetUsers { get; set; }
}
我會去與選項2,因爲沒有必要對數據庫上下文的初始化了,但我不知道這是否是這樣做的正確方法。
我也會選擇'2',但出於更好的理由:您可以使'SomeFunction'使用接口而不是'Database'具體類型。 –