我正在使用 EF 4.1,并创建了一个普通的 EF edmx 文件。我从数据库生成它。
生成后,我右键单击并选择添加代码生成项,以生成新类,并改用 DbContext。我使用模板 DbContext 生成器。
一切正常。
然后我尝试查询上下文:
using (var context = new PasDBEntities())
{
var client=context.ClientCompanies.SingleOrDefault(_=>_.ID==clientCompanyId);
if(client!=null)
创建上下文的新实例没有问题,但是当我尝试查询它时,问题就出现了。我卡在了 UnintentionalCodeFirstException 上。并得到错误:
{"如果在 Code First 模式下使用用于 Database First 和 Model First 开发的 T4 模板生成的代码可能无法正常工作。要继续使用 Database First 或 Model First,请确保在执行应用程序的配置文件中指定实体框架连接字符串. 要使用从 Database First 或 Model First 生成的这些类,使用 Code First 添加使用属性或 DbModelBuilder API 的任何其他配置,然后删除引发此异常的代码。"}
我不想先使用代码,但我不知道我是否可以“关闭”它,或者问题出在哪里。
作为参考,这是我的构造函数...
public partial class PasDBEntities : DbContext
{
public PasDBEntities()
: base("PasDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
...和连接字符串:
<connectionStrings>
<add name="PasDBEntities"
connectionString="metadata=res://*/PasDB.csdl|
res://*/PasDB.ssdl|
res://*/PasDB.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=localhost;
initial catalog=PasDB;
integrated security=True;
pooling=False;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>