Entity framework 实体框架4.3-使用DataContext接口配置ConnectionString

Entity framework 实体框架4.3-使用DataContext接口配置ConnectionString,entity-framework,connection-string,Entity Framework,Connection String,我在Ninject中使用EF4.3。我有一个简单的DataContext,并为它创建了一个接口。这是一个简单的界面: public interface IMyDataContext { DbSet<ComplexType> ComplexTypes { get; set; } int SaveChanges(); } 公共接口IMyDataContext { DbSet ComplexTypes{get;set;} int SaveChanges(); } My

我在Ninject中使用EF4.3。我有一个简单的DataContext,并为它创建了一个接口。这是一个简单的界面:

public interface IMyDataContext
{
    DbSet<ComplexType> ComplexTypes { get; set; }

    int SaveChanges();
}
公共接口IMyDataContext
{
DbSet ComplexTypes{get;set;}
int SaveChanges();
}
MyDataContext的实现:

    public class MyDataContext : DbContext, IMyDataContext
{
    public DbSet<ComplexType> ComplexTypes { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder); //Not sure if this is necessary.. 

        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
公共类MyDataContext:DbContext、IMyDataContext { 公共DbSet ComplexTypes{get;set;} 模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder);//不确定这是否必要。。 modelBuilder.Conventions.Remove(); } } 我将它添加到NInject中:

Kernel.Bind<IMyDataContext>().To<MyDataContext>();
Kernel.Bind().To();
使用连接字符串名称MyDataContext不起作用,如果使用IMyDataContext,它将生成另一个名为完整程序集名称的数据库。只映射了一个表/类。。不确定这是否与此有关

  <connectionStrings>
    <add name="MyDataContext"
     connectionString="Server=MyPc\SQLEXPRESS;Database=MyDataContext;Persist Security Info=True;Integrated Security=true;MultipleActiveResultSets=True"
     providerName="System.Data.SqlClient" />

我知道我可以重写数据上下文上的构造函数。。。。但我以为这应该是“自动地图”。有什么想法吗

提前谢谢

只要做一个

Kernel.Bind<IMyDataContext()
    .To<MyDataContext()
    .WithConstructorArgument("nameOrConnectionString", "MyDataContext");
避免任何问题


映射的内容也取决于DbContext上的DbSet声明,您还应该发布MyDataContext实现。

谢谢-在上面添加了实现。我希望找到一种只使用datacontext名称的方法,但我认为这很简单。谢谢。
public class MyDataContext : IMyDbContext, DbContext
{
    public MyDataContext (string nameOrConnectionString) 
       : base(nameOrConnectionString) { }
}