我们有一个使用ServiceStack OrmLite进行数据库访问的小型应用程序。我目前正在调查一个以前有效的损坏的功能。
有两个相关的实体:
[Alias("MyOrder")]
public class OrderEntity
{
[AutoIncrement]
public int Id { get; set; }
...
// Saved as JSV blob in the table
public AppEntity Processor { get; set; }
}
[Alias("MyApp")]
public class AppEntity
{
[AutoIncrement]
public int Id { get; set; }
...
[StringLength(64)]
public string UserName { get; set; }
public Guid? InternalUserId { get; set; }
}
不确定这是否重要,但AppEntity
位于另一个DLL/程序集中。
现在出现了一种奇怪的行为。Processor
已正确保存在表中。我还可以在集成测试中检索它们。但是,在生产代码中,当获取OrderEntity
对象列表时,Processor
属性在每个实例中都为null。
我在调试器中深入研究了ServiceStack代码,发现JSV字符串最初是正确获取的,但似乎在此过程中迷失了方向。
这是一个有效的单元测试:
var connectionString = @"Server=...";
var connectionFactory = new OrmLiteConnectionFactory(connectionString, new SqlServerOrmLiteDialectProvider());
var orderRepository = new OrderRepository(connectionFactory);
var orders = orderRepository.FindBySomeFilter();
// entries have not-null .Processor property
这是一个无法工作的小应用程序:
var connectionString = @"Server=...";
var connectionFactory = new OrmLiteConnectionFactory(connectionString, new SqlServerOrmLiteDialectProvider());
var orderRepository = new OrderRepository(connectionFactory);
var orders = orderRepository.FindBySomeFilter();
// .Processor is not retrieved / null for all entries
版本:
5.4.0
发布于 2019-03-25 08:34:28
在无法加载System.Runtime.CompilerServices.Unsafe
依赖项的情况下,您可以尝试解决运行时依赖项加载问题:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
添加到项目由于这是一个.NET框架项目,您可以尝试添加绑定重定向:
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>
或者,如果您已经为此配置了绑定重定向,请尝试删除它。
否则,升级到最新的.NET框架v4.7+也可以解决加载运行时系统依赖关系的问题,如下所示。
https://stackoverflow.com/questions/55329588
复制相似问题