ServiceStack OrmLite Text blobed值被检索为null

时间:2019-03-24 23:31:00

标签: servicestack ormlite-servicestack

我们有一个使用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属性都为空。

我在调试器中深入研究了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

版本:

  • .NET 4.5.2
  • ServiceStack 5.4.0

1 个答案:

答案 0 :(得分:1)

您可以尝试解决无法加载System.Runtime.CompilerServices.Unsafe依赖项的此类运行时依赖项加载问题:

  • 尝试手动添加对该程序包的引用,或者如果已经安装了该程序包,请尝试卸载/重新安装它。
  • 尝试将<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>添加到您的项目中

由于这是一个.NET Framework项目,因此您可以尝试添加绑定重定向:

<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 Framework v4.7 + 也可以解决加载此类运行时系统的问题。