一旦我解决了一期 https://stackoverflow.com/questions/45782871/net-standard-2-0-entityframeworkcore-db2-ibm-entityframeworkcore-issue with IBM.EntityFrameworkCore https://www.nuget.org/packages/IBM.EntityFrameworkCore/,又一个出现了。对于 DB2 和他们的 .NET 团队来说,一切都那么艰难和痛苦......
问题:我有几个EntityFrameworkCore
- 例如,基于同一 VS 解决方案的项目MyDb2EfModel
, MyMsSqlEfModel
, and MyNpgsqlEfModel
。 (这是一种复杂的数据集成场景。)最重要的是,我有一个 CLI 项目,它引用所有这三个并执行实际的数据操作。当 CLI 项目仅引用时MyDb2EfModel
项目 -IBM.EntityFrameworkCore
按预期工作。但是,一旦我添加对其余两个项目的引用,它就会停止工作并抛出一些误导性的异常。异常发生是因为被覆盖DbContext.OnConfiguring
and DbContext.OnModelCreating
不再调用方法。当只有一个参考时(MyDb2EfModel
)方法按预期调用,一切正常。但是,随着所有三个库项目的引用,它们不再被调用。
我们还要注意,上面提到的方法会被调用DbContext
实例来自MyMsSqlEfModel
and MyNpgsqlEfModel
图书馆。唯一停止工作的是MyDb2EfModel
(这是基于IBM.EntityFrameworkCore
).
对 IBM 及其 .NET 团队表示不满!可笑的是,这些人如何让事情变得比任何其他数据库复杂 100 倍。
问题很明显:是否有人有类似情况的经验,并希望有任何建议如何解决该问题?
Thanks!
我已经找到原因了原来是关于Microsoft.EntityFrameworkCore
版本。目前可用的版本IBM.EntityFrameworkCore
is 1.1.1.101
(.NET 标准 1.6),它使用Microsoft.EntityFrameworkCore
版本1.1.1
or 1.1.2
. It cannot与一起使用Microsoft.EntityFrameworkCore
版本2.0.0
(.NET Standard 2.0) - 它抛出了我得到的异常。
在我使用的另外两个库中Npgsql.EntityFrameworkCore.PostgreSQL
版本2.0.0
and Microsoft.EntityFrameworkCore.SqlServer
版本2.0.0
,两者都取决于Microsoft.EntityFrameworkCore
版本2.0.0
(全部在 .NET Standard 2.0 中)。
所以当我只引用MyDb2EfModel
在我的 CLI 项目中,一切都正常,因为只有Microsoft.EntityFrameworkCore
版本1.1.2
被引用和使用。但是一旦我添加对另一个项目的引用,CLI 就会最终依赖于这两个项目Microsoft.EntityFrameworkCore
版本1.1.2
and 2.0.0
版本,以及较新的(2.0.0
) 被加载并使用。和IBM.EntityFrameworkCore
失败是因为它无法使用它。
怎么解决?要么等待IBM.EntityFrameworkCore
对于 .NET Standard 2.0,或降级其他引用以确保Microsoft.EntityFrameworkCore
版本2.0.0
没有在任何地方使用(这会导致其他头痛)。
所以虽然这不是一个错误IBM.EntityFrameworkCore
,IBM DB2 .NET 团队仍然要为没有发布 .NET Standard 2.0 至少预览版而受到指责,尽管 .NET Standard 2.0 已经推出近一年了,最近才达到其“发布”版本。还有更多的事情可以归咎于 IBM DB2 .NET 团队(与这个特定问题无关)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)