我正在使用 EntityFramework 5.0 和 MySql。我已经从数据库生成了模型,我的应用程序现在必须使用相同的结构化数据连接多个数据库。所以我必须根据一些信息动态更改连接字符串。
我什至尝试从连接字符串的配置部分更改数据库名称,并使用 EntityConnectionStringBuilder,但我得到了相同的结果:我的新连接存储正确,但返回的数据是第一个数据库的。
来自 WebConfig:
添加名称="dbIncassiEntities" connectionString="metadata=res:// /DAL.Modelincassi.csdl|res:// /DAL.Modelincassi.ssdl|res://*/DAL.Modelincassi.msl;provider=Devart.Data .MySql;provider 连接字符串="user id=root ... database=dbname2"" providerName="System.Data.EntityClient" />
从代码:
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = providerName;
entityBuilder.ProviderConnectionString = "user id=...database=dbname2";
entityBuilder.Metadata = @"res://*/DAL.Modelincassi.csdl|res://*/DAL.Modelincassi.ssdl|res://*/DAL.Modelincassi.msl";
var context = new dbIncassiEntities(entityBuilder.ToString());
我的构造函数:
public dbIncassiEntities(string conn)
: base(conn)
{
}
我错过了什么?
更新
我可以看到直接从 SqlQuery 调用查询,返回的结果是正确的,而使用生成的实体我检索到错误的数据。
var test = context.Database.SqlQuery<string>(
"SELECT cognomenome FROM addetto limit 0,1").ToList();
但是打电话..
var oAddetto = from c in context.addettoes select c;
所以我的问题只出在模型本身上,并手动更改生成的模式
<EntitySet Name="addetto" EntityType="dbIncassiModel.Store.addetto" store:Type="Tables" Schema="dbname2" />
..我会得到正确的信息。
我现在的问题是:如何更改这些信息的代码?任何帮助都非常感谢!
谢谢,大卫