使用sqlite-pcl和通用存储库存储具有类属性的自动映射对象



我正在进行的项目是一个Xamarin移动应用程序,它具有RESTapi和离线优先实践。为了实现这一点,我设置了一个通用存储库,用于处理与设备上SQLite数据库的通信。

离线优先仅用作读取数据的后备机制,不需要处理"复杂场景">

我们正在使用automapper将http-json对象转换为域到数据库表,这是我们在存储数据库dto对象的类属性时遇到的问题。

映射时,卸载和加载地址被正确转换,但sqlite似乎无法将address_DTO对象解析为字符串。

请参阅订单dto的地址和地址块。

/// DTO Wrapper for storing order information do the database
/// </summary>
/// <seealso cref="CarrierConnectMobile.Core.Repositories.EntityBase" />
[Table("Orders")]
public class DTO_DBOrder : EntityBase
{
public string? LicensePlate { get; set; }
public string Quantity { get; set; }
public string ProductKind { get; set; }
public string ProductType { get; set; }
public string Product { get; set; }
public OrderStatus Status { get; set; }
public bool ProvidedUnloadData { get; set; }
public bool ProvidedLoadData { get; set; }
[TextBlob("UnLoadAddressBlob")]
public DTO_DBAddress UnloadAddress { get; set; }
[TextBlob("LoadAddressBlob")]
public DTO_DBAddress LoadAddress { get; set; }
public string UnLoadAddressBlob { get; set; }
public string LoadAddressBlob { get; set; }
}

数据库的DTO对象的自动映射器配置文件对UnloadAddress和LoadAddress具有相同的命名约定,并且它们使用以下最低设置进行了正确映射。

public DBProfiles()
{
CreateMap<DTO_DBAddress, DTO_HttpAddress>().ReverseMap();
CreateMap<DTO_DBAddress, Address>().ReverseMap();
CreateMap<DTO_DBOrder, Order>()
.ReverseMap();
CreateMap<DTO_DBOrder, DTO_httpOrderListItem>()
.ForMember(d => d.Status, opt => opt.ConvertUsing(new OrderStatusStringToEnumConverter(), src => src.Status))
.ReverseMap();
}

有什么配置错误吗?因为我似乎不知道为什么sqlite没有将地址对象存储为字符串blob并正确解析

迟到总比不迟到好。把这个放在将来需要的人身上。

该问题是使用常规sqlLite库方法而不是sqlLite-pcl中的sqlite扩展库引起的。

using STLiteNetExtensionsAsync.Extensions没有被建议使用我所依赖的自动完成。我不知道如果不使用扩展,对象的序列化将无法工作。

最新更新