C# 使用实体框架6的不同数据库

C# 使用实体框架6的不同数据库,c#,.net,entity-framework,C#,.net,Entity Framework,我在使用EntityFramework6的mvc应用程序中使用不同的数据库时遇到问题。我们的客户将使用自己的数据库,可以是MySQL、PostgreSQL或Oracle数据库 我已经为MySQL和PostgreSQL创建了一个.edmx文件,这些模型可以单独工作,但如果可能的话,我只想对所有数据库使用一个模型。数据库将具有相同的表和列 所以我想做这样的事情: using (var connection = new DbConnection()) { string id = connect

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

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

所以我想做这样的事情:

using (var connection = new DbConnection())
{
    string id = connection.Set<user>().First().Id;
}
metadata=res://*/DataModel.csdl|c:\dev\program\bin\debug\DataModel.VistaDB.ssdl|res://*/DataModel.msl;
DbConnection必须是到正确数据库的连接,您可以看到在资源文件中使用哪个数据库

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

我已经读过了,当我按照说明做的时候,我得到了一个

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

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


我是用正确的方法做的,还是有人知道有没有更好的方法来做呢?

我尝试过做你想做的事情,但是使用了MS SQL和Vista DB。我遵循了那个教程,遇到了同样的问题

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

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

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

using (var connection = new DbConnection())
{
    string id = connection.Set<user>().First().Id;
}
metadata=res://*/DataModel.csdl|c:\dev\program\bin\debug\DataModel.VistaDB.ssdl|res://*/DataModel.msl;

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

谢谢您的回复。您将ssdl文件放在哪个文件夹中?我不确定应该在连接字符串中更改什么