我创建了一个小的测试函数,用于创建直接连接到SQL CE 4.0文件的Entity Framework Code-First DbContext实例,但我真的不喜欢全局状态方法。没有使用DbDatabase静态属性,有没有更好的方法呢?
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Database;
using System.Data.SqlServerCe;
public class SqlCeDb
{
public static T Instance<T>() where T: DbContext, new()
{
DbDatabase.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
DbDatabase.SetInitializer<T>(new DropCreateDatabaseAlways<T>());
return new T();
}
}
答案 0 :(得分:2)
依赖注入是许多人正在做的事情。您编写了一个依赖于DbContext的类(即它是构造函数参数或作为依赖项修饰的属性),IoC(控制反转)容器将在创建类时为您提供实例。我使用过的每个IoC容器都有一种注册单个实例的方法(而不是每次都创建一个新实例)。
热门的IoC容器:
还有其他人,但这些是我经常使用的那些。