使用实体框架6

本文关键字:框架 实体 | 更新日期: 2023-09-27 18:21:51

我在使用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文件,但就是找不到。

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

使用实体框架6

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

通过遵循教程,您将为每个DB拥有一个单独的ssdl文件。请确保已将其设置为复制到输出目录,然后相应地更新连接字符串。

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

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

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

请注意,ssdl的路径是一个文件夹路径。我听到的路就是我曾经走过的路。您需要相应地更改