gpt4 book ai didi

db2 - IBM.EntityFrameworkCore - DbContext.OnConfiguring 和 DbContext.OnModelCreating 未被调用

转载 作者:行者123 更新时间:2023-12-04 16:40:51 24 4
gpt4 key购买 nike

一旦我解决了one issueIBM.EntityFrameworkCore ,另一个出现了。对于 DB2 和他们的 .NET 团队来说,一切都是那么艰难和痛苦......

问题:我在同一个 VS 解决方案中有几个基于 EntityFrameworkCore 的项目,例如 MyDb2EfModelMyMsSqlEfModel MyNpgsqlEfModel。 (这是一种复杂的数据集成场景。)最重要的是,我有一个 CLI 项目,它引用所有这三个项目并执行实际的数据操作。当 CLI 项目仅引用 MyDb2EfModel 项目时 - IBM.EntityFrameworkCore 按预期工作。但是一旦我添加对其余两个项目的引用 - 它就会停止工作并抛出一些误导性的异常。发生异常是因为不再调用覆盖的 DbContext.OnConfiguringDbContext.OnModelCreating 方法。当只有一个引用 (MyDb2EfModel) 时,方法会按预期调用,并且一切正常。但是引用了所有三个库项目 - 它们不再被调用。

我们还要注意,上述方法是在 MyMsSqlEfModelMyNpgsqlEfModel 库的 DbContext 实例上调用的。唯一停止工作的是 MyDb2EfModel(基于 IBM.EntityFrameworkCore)。

对 IBM 和他们的 .NET 团队表示不满!这些家伙让事情变得比任何其他数据库复杂 100 倍,这真是荒谬。

问题很明显:有没有人在类似情况下有任何经验,希望有任何解决问题的建议?

谢谢!

最佳答案

我找到了原因。原来是关于Microsoft.EntityFrameworkCore版本的。当前可用的 IBM.EntityFrameworkCore 版本是 1.1.1.101 (.NET Standard 1.6),它使用 Microsoft.EntityFrameworkCore 版本 1.1 .11.1.2。它不能Microsoft.EntityFrameworkCore 版本 2.0.0 (.NET Standard 2.0) 一起使用 - 它抛出我遇到的异常。

在另外两个库中,我使用了 Npgsql.EntityFrameworkCore.PostgreSQL 版本 2.0.0Microsoft.EntityFrameworkCore.SqlServer 版本 2.0.0,两者都取决于 Microsoft.EntityFrameworkCore 版本 2.0.0(全部在 .NET Standard 2.0 中)。

因此,当我在我的 CLI 项目中仅引用 MyDb2EfModel 时,一切正常,因为仅引用和使用了 Microsoft.EntityFrameworkCore 版本 1.1.2 .但是一旦我添加对另一个项目的引用,CLI 就会依赖于 Microsoft.EntityFrameworkCore 版本 1.1.22.0.0 版本, 并加载并使用较新的 (2.0.0)。 IBM.EntityFrameworkCore 失败了,因为它无法使用它。

如何解决?要么等待 .NET Standard 2.0 的 IBM.EntityFrameworkCore,要么降级其他引用以确保 Microsoft.EntityFrameworkCore 版本 2.0.0 不是在任何地方使用(这会导致其他问题)。

因此,虽然这不是关于 IBM.EntityFrameworkCore 中的错误,但 IBM DB2 .NET 团队仍然应该为没有发布 .NET Standard 2.0 至少预览版而受到指责,尽管 .NET Standard 2.0 是可用的近一年了,最近达到了它的“发布”版本。还有更多事情要归咎于 IBM DB2 .NET 团队(与这个特定问题无关)。

关于db2 - IBM.EntityFrameworkCore - DbContext.OnConfiguring 和 DbContext.OnModelCreating 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45826715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com