【问题标题】:Entity Framework Core and .NET Standard 2.0 - an inconsistent behaviorEntity Framework Core 和 .NET Standard 2.0 - 不一致的行为
【发布时间】:2020-05-28 00:30:34
【问题描述】:

环境VS2019 - ver16.6Windows 10 pro 1903

我按照 Microsoft 团队的 this 链接创建了一个 VS2019 解决方案,其中包含 .NET Standard 2.0 库项目和一个虚拟的 .NET Core Console 应用程序作为启动项目。在那个解决方案中,我还按照这个EF Core official tutorial 创建了一个SQLite db(称为MySQLiteDb.db),它在虚拟.NET Core Console 的根目录中创建。

之后,我在我的一个WPF Full Framework 项目中引用了.NET Standard 库来执行一些数据库操作。为此,我将上述项目中的MySQLiteDb.db 复制到了WPF 项目中,并将其Copy to output directory 操作设置为Copy if newer,将Build Action 设置为None。现在,这个WPF Full Framework 应用程序工作正常,并在MySQLiteDb.db 上执行多个数据库操作。

但是,当我通过引用相同的 .NET Standard 库对 Microsoft VSTO Add-in 项目执行与上述相同的操作时,我得到了不一致的行为:例如,应用程序成功执行数据插入的时间有一半,但大约一半应用程序在数据插入时引发以下错误的时间。并且没有数据验证,因为这个测试数据库有三个简单的文本列,没有唯一的键/索引等。问题:为什么 VSTO 项目上的这种不一致行为而不是 WPF 项目上的这种不一致行为,而两者都是 .NET 4.8 项目。以及如何解决这个问题?

错误

内部异常 1:SqliteException:SQLite 错误 1:'没有这样的表:MyTable'。

【问题讨论】:

    标签: c# wpf entity-framework-core vsto .net-standard


    【解决方案1】:

    为什么在 VSTO 项目上出现这种不一致的行为,而在 WPF 项目上却没有,而这两个项目都是 .NET 4.8 项目。

    您需要确保加载项使用的是 .net 框架 4.0 运行时 (CLR),它对应于 .net 框架 4.8,而不是 CLR 2.0。您可以使用配置文件来指定主机应用程序使用的运行时版本,请参阅Application Configuration Files 以获取有关runtime 元素的更多信息。

    【讨论】:

    • 能否请您提供一些关于如何执行此操作的更多步骤。首先,我想将net framework 从 4.8 更改为 4.0。但是,我认为,这不是你的意思。
    • 您是否有机会在运行时检查使用了哪个 CLR 和 .Net 框架?它的工作和失败有什么区别吗?
    • @EugenAstafiev 在您发表评论后,我观察到应用程序在两种情况下都使用 CLR 4.0 失败或工作。一个样本:'WINWORD.EXE' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.Tools.Office.Runtime\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Tools.Office.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    • 看看 Windows 中的事件查看器。你有任何错误写在那里吗?
    • 那里没有显示错误。在调试模式下,我能够添加两条记录。两次点击添加了两条记录。第三次点击引发了与上面帖子中所示完全相同的错误。
    猜你喜欢
    • 2019-01-18
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 2018-06-21
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    相关资源
    最近更新 更多