mysql - MySql 上的 EntityFramework 更改连接字符串不会更改结果数据

标签 mysql entity-framework

我正在使用 EntityFramework 5.0 和 MySql。我已经从数据库生成了模型,我的应用程序现在必须使用相同的结构化数据连接多个数据库。 所以我必须根据一些信息动态更改连接字符串。

我尝试甚至从连接字符串的配置部分以及使用 EntityConnectionStringBuilder 更改数据库名称,但我得到了相同的结果:我的新连接已正确存储,但返回的数据是第一个数据库的数据。

来自 WebConfig:

add name="dbIncassiEntities" connectionString="metadata=res:///DAL.Modelincassi.csdl|res:///DAL.Modelincassi.ssdl|res://*/DAL.Modelincassi.msl;provider=Devart.Data.MySql;provider connection string="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" />

..我会得到正确的信息。

我现在的问题是:我如何在代码中更改这些信息? 非常感谢任何帮助!!

谢谢大卫

最佳答案

好的,我现在找到了解决方法。

我只需清除设计器上的模式名称,现在我可以成功调用生成的实体。希望这可以帮助其他人。

大卫

关于mysql - MySql 上的 EntityFramework 更改连接字符串不会更改结果数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19519387/

相关文章:

mysql - 从表中删除一行

mysql - SQL - 通过第三个表中的公共(public)链接连接三个表

c# - Npgsql/EF 6 - json 列

c# - Entity Framework 实体类与普通 .NET 类的映射

c# - Entity Framework 、预加载和大对象图

mysql - 如何将时间戳从 MySQL 表转换为人类可读的形式

php - 'Bob' 中的未知列 'field list' ... php 或 mysql 问题

c# - Linq toEntity contains 不适用于预存储的变量

mysql - 不同语言的不同 MySQL 表

c# - 尝试 "Reverse Engineer Code First"MySQL 数据库时出错