【发布时间】:2018-03-28 07:59:57
【问题描述】:
您好,我有一些具有相同架构的数据库的服务器。我使用 EF6 数据库/模型优先代码,我不想为他们创建威慑 DbContext。例如我生成的DbContext 是:
public partial class TEST_Rev5_FINALEntities : DbContext
{
public TEST_Rev5_FINALEntities()
: base("name=TEST_Rev5_FINALEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Header> tbl_Headers { get; set; }
public virtual DbSet<Output> tbl_Output { get; set; }
public virtual DbSet<Run> tbl_Run { get; set; }
}
我创建了一个部分类来设置连接字符串
public partial class TEST_Rev5_FINALEntities : DbContext
{
public TEST_Rev5_FINALEntities(DbConnection dbConnection)
: base(dbConnection, true)
{
}
}
我有以下方法来创建具有威慑连接字符串的连接:
public DbConnection GetConnectionString()
{
DbConnection conn;
SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder
{
DataSource = DataSource,
IntegratedSecurity = false,
UserID = User,
Password = Password,
MultipleActiveResultSets = true
};
SqlConnectionFactory sqlConnectionFactory = new SqlConnectionFactory(sqlConnectionStringBuilder.ConnectionString);
conn = sqlConnectionFactory.CreateConnection(DatabaseName);
return conn;
}
最后我尝试像这样运行它:
using (var context = new TEST_Rev5_FINALEntities(_dal.Connector.GetConnectionString()))
{
return context.tbl_Headers.FirstOrDefault();
}
但我收到此错误:
System.Data.Entity.Infrastructure.UnintentionalCodeFirstException
HResult=0x80131509 Message=上下文正在 Code First 中使用 使用从 EDMX 文件生成的代码的模式 数据库优先或模型优先开发。
我该怎么做?
【问题讨论】:
-
你能发布你在连接中使用的模式吗?
-
Data Source=gsql;Initial Catalog=TEST_Rev5_FINAL;Integrated Security=False;User ID=***;Password=***;MultipleActiveResultSets=True 我想这就是问题所在。谢谢喷子
-
参考 Martining Zikmunds 的回答。这应该是正确的
-
哦,我很惊讶元数据部分不存在:-O
标签: c# entity-framework