c# - 将 Dapper 与 WP 一起使用时抛出 PlatformNotSupportedException

标签 c# uwp dapper

DEBUG 中执行 UWP 应用程序完美无缺。

使用在 RELEASE 中编译的完全相同的代码会崩溃并显示此错误消息

System.PlatformNotSupportedException: 
    'Dynamic code generation is not supported on this platform.'

执行此代码时(它使用 Dapper 1.5.1System.Data.SQLite 1.0.109.2)

using (var c = NewConnection())
{
    var sql = @"
        update settings
        set
            ""value"" = @SetDate
        where ""key"" = 'week_date'";
    c.Execute(sql, new { SetDate = date }); //<= throws PlatformNotSupportedException 
                                            // only on RELEASE not in DEBUG
}

应用程序是 UWP 配置如下。此外,错误代码是 .NET Standard 2.0 Class Library

enter image description here

为什么它仅在 RELEASE 时崩溃,如何修复?

最佳答案

Dapper 非常深入地基于运行时 IL 生成,基本上无法更改。运行时 IL 生成基本上与 UWP 不兼容。

没有简单的方法可以完成这项工作。

因此:要做到这一点,您需要使用类似小巧但不 Dapper 东西,并使用两种替代实现之一:

  • 基于反射的绑定(bind)(相对较慢,具体取决于您访问的数据量)
  • 编译时代码生成 缺失部分,大概使用某种 roslyn 分析和部分类生成

也许现在,更务实的方法是:在这种情况下不要使用 dapper。

关于c# - 将 Dapper 与 WP 一起使用时抛出 PlatformNotSupportedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184301/

相关文章:

c# - 简单的 DotNetNuke 数据库访问示例

C#,如何通过分隔符拆分字节数组?

c# - 使用完表格后需要将其丢弃吗?

windows-phone-8.1 - 如何检测在 Windows 10 Mobile 上启动的 WP8.1 应用程序?

c# - 安装 Visual Studio 2015.1 后的 UWP SplitView 问题

c# - 我可以从 Dapper 查询返回多个派生类型的集合吗

c# - 从对象类型创建表

c# - Entity Framework 如何填充需要连接的NotMapped属性?

xamarin - 有没有办法运行 Xamarin UWP 项目而无需每次都部署

c# - 有没有办法将属性映射到 Dapper 中的自定义类型?