Entity framework 实体框架4.3-使用DataContext接口配置ConnectionString
我在Ninject中使用EF4.3。我有一个简单的DataContext,并为它创建了一个接口。这是一个简单的界面: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
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) { }
}