使用没有全局状态的实体框架

时间:2011-02-18 15:02:01

标签: entity-framework code-first

我创建了一个小的测试函数,用于创建直接连接到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();
    }
}

1 个答案:

答案 0 :(得分:2)

依赖注入是许多人正在做的事情。您编写了一个依赖于DbContext的类(即它是构造函数参数或作为依赖项修饰的属性),IoC(控制反转)容器将在创建类时为您提供实例。我使用过的每个IoC容器都有一种注册单个实例的方法(而不是每次都创建一个新实例)。

热门的IoC容器:

  • StructureMap
  • 统一
  • Ninject

还有其他人,但这些是我经常使用的那些。