asp.net mssql 与 asp.net mysql_c#-如何在带有实体框架的ASp.net应用程序中同时使用MySQL和MSSQL...

我已经编写了一个ASp.net C#.NET 4.0应用程序,并使用了SQL2008 DB女士.

这是一个2层应用程序… BLL / DAL和UI

我用过

-表(具有多个索引以使记录唯一)

-表之间的关系(1至m关系)

-数据模型实体框架

-LINQ(更新/插入/选择/删除)

我没用过

-储存程序

-意见

–Tsql

-无需手动SQL操作

-等

因此,如果您看到它,则安装非常简单.该应用程序使用MsSQL2008 DB

所以我的问题是:我需要使用MySQL(客户端请求).

我需要做什么?既然我已经使用了Entitiy Framework,我认为这应该很容易完成,对吧?

如何使应用程序可以使用MySQL /或同时支持两者(我的SQL / Mysql).

请指教?

解决方法:

EDMX文件包括三个部分:

> SSDL-数据库说明.本部分包括有关使用的数据库服务器的信息

> CSDL-您的课程说明

> MSL-SSDL和CSDL工件之间的映射说明

如果要使用多个数据库服务器,则每个服务器必须至少具有单独的SSDL(如果每个数据库要使用不同的表名或列名,则还必须具有单独的MSL).

编译库时,这三个部分被提取到单独的文件中,并作为资源包含在已编译的dll中.那就是从EF连接字符串中引用的那些奇怪的东西.您可以切换generation in EF designer,这些文件将被部署到您的bin目录中.

支持多个数据库服务器的问题是您需要多个SSDL文件. VS和EF设计器允许您仅在EDMX中使用SSDL,而每个EDMX只能有一个SSDL.因此,支持多个数据库的选项是:

>每个服务器分别使用EDMX.这带来了很大的问题,因为您必须同步它们,并且必须确保CSDL部分完全相同.

>您的项目中有一个CSDL,一个MSL,两个SSDL.同样,这确实是有问题的,因为这意味着只有一个主EDMX和单独的SSDL(这是XML文件),您将在其中再次维护所有数据库描述.

>只有一台EDMX for MSSQL服务器,其中部署了工件以对目录进行单独的后处理,这将占用SSDL并自动为MySQL创建第二个.这是恕我直言的最佳选择.您需要检测MySQL和MSSQL之间使用的类型之间的差异(可以使用@ChristiaanV描述的技巧来找到这些差异,但请确保备份EDMX,因为必须将其还原)并编写自定义控制台应用程序,脚本或XSLT转换会将MsSQL的SSDL转换为MySQL的SSDL.您将以一个CSDL,一个MSL和两个SSDL结尾,其中第二个是从第一个自动生成的.

要使其在运行时运行,您需要EF的MySQL提供程序-例如@Christaan​​V提到的连接器,并且必须在MSSQL和MySQL的连接字符串中引用正确的SSDL.

顺便说一句.下次在开发应用程序之前了解哪个DB客户需要.对于平台客户不支持的应用程序开发是真正的分析/需求失败.

标签:asp-net,sql-server-2008,c,mysql,entity-framework

来源: https://codeday.me/bug/20191101/1987024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值