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

问题描述

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

离线优先仅用作读取数据的回退机制,不需要处理“复杂场景”

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

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

查看命令 dto 的地址和地址 blob。

    /// 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 并正确解析它

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...