在Entity Framework 6中使用不同的数据库

时间:2014-09-15 13:01:55

标签: c# .net entity-framework

我在使用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文件,但我无法找到它。

我是以正确的方式做的,还是有人知道是否有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

我尝试使用MS SQL和Vista DB完成您正在尝试的操作。我按照那个教程进行了同样的问题。

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

要将其设置为复制到输出文件夹,请右键单击解决方案资源管理器中的ssdl文件,然后更改&#34;复制到OUtput目录&#34;到&#34;复制如果更新&#34;。

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

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

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