将Dapper与WP一起使用时会引发PlatformNotSupportedException

时间:2019-01-14 15:21:36

标签: c# uwp dapper

py_discover_config()中执行UWP应用程序非常正常。

使用在DEBUG中编译的完全相同的代码会崩溃,并显示以下错误消息

RELEASE

在执行此代码时(使用System.PlatformNotSupportedException: 'Dynamic code generation is not supported on this platform.' Dapper 1.5.1

System.Data.SQLite 1.0.109.2

应用程序的UWP配置如下。此外,错误代码是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 } .NET Standard 2.0

enter image description here

为什么它仅在Class Library上崩溃,以及如何解决?

1 个答案:

答案 0 :(得分:2)

Dapper非常基于运行时IL生成,因此基本上不可能更改。运行时IL生成基本上与UWP不兼容。

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

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

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

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