【发布时间】:2015-10-14 18:37:18
【问题描述】:
大家好,
我正在使用实体框架模型。我需要像参数一样传递我的连接字符串,所以,在另一个文件中,我写了(来自this question):
namespace MyNamespace.Model
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class MyEntities: DbContext
{
public MyEntities(string nameOrConnectionString) : base(nameOrConnectionString)
{
}
}
}
当我启动应用程序时,我以这种方式调用这个构造函数,所以我可以在应用程序中引用这个:
public static MyEntities dbContext =
new MyEntities(mdlImpostazioni.SetConnectionString());
其中mdlImpostazioni.SetConnectionString()返回一个字符串(数据正确):
server=192.168.1.100\SVILUPPO;database=MyDB;uid=myName;pwd=111111;
当我执行这段代码时,似乎一切正常,但是当我尝试进行如下查询时:
var query = (from r in MainWindow.dbContext.TabTipoSistema select r);
它从这里抛出一个异常:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
说:
附加信息:如果在 Code First 模式下使用,使用 T4 模板生成的用于 Database First 和 Model First 开发的代码可能无法正常工作。要继续使用 Database First 或 Model First,请确保在运行的应用程序的配置文件中指定了 Entity Framework 的连接字符串。要将这些从 Database First 或 Model First 生成的类与 Code First 一起使用,请使用属性或 API DbModelBuilder 添加任何其他配置,并删除引发此异常的代码。
堆栈跟踪是:
在 MyNamespace.Model.MyEntities.OnModelCreating(DbModelBuilder modelBuilder) 在 c:...\Model\Model.Context.cs:row 25 在 System.Data.Entity.DbContext.CallOnModelCreating(DbModelBuilder modelBuilder) 在 System.Data.Entity.Internal.LazyInternalContext.CreateModelBuilder() 在 System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) 在 System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput 输入)*
InnerException 为空。
错误在哪里?
【问题讨论】:
标签: c# database entity-framework database-connection connection-string