一个POCO模型,具有不同的数据提供者

时间:2010-11-12 07:45:03

标签: c# asp.net entity-framework-4 poco

我有一个客户端应用程序(WPF,C#,。net4),它使用通过SQLITE提供程序连接的POCO实体模型。因此,我希望在asp.net项目(使用MSSQL提供程序)中使用此项目中的相同实体,以便在我的客户端应用程序中使用相同的实体。我想在我的客户端应用程序(SQLITE)和Web服务器(MSSQL)之间使用相同的poco模型使用Web服务创建某种复制功能。

因此,我在两个项目中都引用了我的实体模型,并为edmx文件提供了不同的连接字符串。在这种情况下(因为edmx是为sqlite提供程序编译的)当我尝试使用mssql数据提供程序时,我得到一个例外:

  

无法将System.Data.SqlConnection强制转换为System.Data.SQliteConnection

所以我的问题是,是否可以在一个实体模型中使用不同的数据提供者? 在不同项目中使用相同模型的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,那么如果您正在寻找支持多个数据库实施的EF模型,那么这是不可能的。 EF自动生成的SSDL文件将包含提供程序特定的元数据,因此将限制它与您正在使用的不同数据库实现的独立性。

有一些articles提供了解决此问题的方法,但这需要为每个提供程序单独复制模型,并使用提供程序详细信息破解生成的XML。

答案 1 :(得分:0)

使用POCO应该是可能的。 只要Web服务传递xml或json数据,它就不会绑定到任何特定的数据连接器实现。我不确定它在二进制模式下会是什么 - 可能有一些数据模型的链接。 您是从WPF应用程序还是从Web服务收到此错误?听起来你正试图在客户端应用程序中测试这个。您是否尝试过实施网络服务?