【问题标题】:Using different databases with Entity Framework 6在 Entity Framework 6 中使用不同的数据库
【发布时间】:2014-09-15 13:01:54
【问题描述】:

我在使用 Entity Framework 6 的 mvc 应用程序中使用不同的数据库时遇到问题。我们的客户将使用他们自己的数据库,可以是 MySQL、PostgreSQL 或 Oracle 数据库。

我为 MySQL 和 PostgreSQL 创建了一个 .edmx 文件,这些模型单独工作,但如果可能的话,我只想对所有数据库使用一个模型。数据库将具有相同的表和列。

所以想做这样的东西:

using (var connection = new DbConnection())
{
    string id = connection.Set<user>().First().Id;
}

DbConnection 必须连接到正确的数据库(您可以在资源文件中查看要使用的数据库)

我在使用数据库优先方法时遇到了以下问题:

我已阅读http://www.codeproject.com/Articles/82017/Preparing-an-Entity-Framework-model-for-multi-prov.aspx,当我按照说明操作时,我得到了一个

MetadataException: 无法加载指定的元数据资源异常。

我已尽一切努力寻找.ssdl 文件,但就是找不到。

我这样做的方式是否正确,或者有人知道是否有更好的方法吗?

【问题讨论】:

    标签: c# .net entity-framework


    【解决方案1】:

    我尝试完全按照您的要求进行操作,但使用的是 MS SQL 和 Vista DB。我遵循了该教程并遇到了同样的问题。

    按照本教程,您将为每个数据库创建一个单独的 ssdl 文件。确保您已将其设置为复制到输出目录,然后相应地更新您的连接字符串。

    要将其设置为复制到输出文件夹,请在解决方案资源管理器中右键单击 ssdl 文件并将“复制到输出目录”更改为“如果较新则复制”。

    然后将连接字符串的元数据部分更改为如下内容:

    metadata=res://*/DataModel.csdl|c:\dev\program\bin\debug\DataModel.VistaDB.ssdl|res://*/DataModel.msl;
    

    注意 ssdl 的路径是文件夹路径。我听到的路径是我使用的路径。您需要相应地更改它

    【讨论】:

    • 感谢您的回复。你把ssdl文件放在哪个文件夹里?而且我不确定应该在连接字符串中更改什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2013-12-16
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    相关资源
    最近更新 更多