连接SqlServer的Mono 3.0.10中的实体框架6会引发Provider不兼容的异常

时间:2013-06-19 12:37:49

标签: sql-server entity-framework mono entity-framework-6

我创建了一个简单的控制台测试应用程序,可以与连接SqlServer DB的Entity Framework 5一起使用。 比,我尝试通过将项目参考从MS EF5替换为Mono EF6来将项目转换为使用Mono-3.0.10,添加了对mono EntityFramework.SqlServer.dll的引用, 并将App.Config文件更新为Entity Framework 6.0.0.0版。 我已经设法使用Visual Studio 2012在Mono 3.0.10配置文件下构建项目而没有任何错误。

现在,当我尝试在Mono下运行项目时,我得到一个例外:

System.Data.Entity.Core.ProviderIncompatibleException:提供程序未返回ProviderManifest实例----> System.UriFormatException:无效的Uri。无法确定Uri的格式:System.Data.Resources.SqlClient.SqlProviderServices.ProviderManifest.xml。

任何人都可以提供帮助,或者至少提供一个代码示例,展示如何使用Mono进行操作? 谢谢

1 个答案:

答案 0 :(得分:0)

我做了同样的事情并得到了同样的错误。我的解决方案是从源代码编译EntityFramework(Codeplex,版本6.1.0alpha)并更改SqlProviderManifest.cs中的一行代码

    private static XmlReader GetXmlResource(string resourceName)
    {
        //return XmlReader.Create(typeof(SqlProviderManifest).Assembly().GetManifestResourceStream(resourceName), null, resourceName);
        return XmlReader.Create(typeof(SqlProviderManifest).Assembly().GetManifestResourceStream(resourceName), null, String.Empty);
    }

不好,但解决了我的问题,直到我尝试了一些非常奇怪的lamba查询或试图写一些东西到数据库。