【问题标题】:Storing automapped object with class properties with sqlite-pcl and a generic repository使用 sqlite-pcl 和通用存储库存储具有类属性的自动映射对象
【发布时间】:2021-04-05 10:18:03
【问题描述】:

我正在进行的项目是一个 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 并正确解析它

【问题讨论】:

  • 看看你的描述,不知道你的问题是什么?
  • @CherryBu-MSFT 我已经编辑了问题描述,我同意它很宽泛,抱歉!该问题与将对象从数据库 DTO 映射到数据库 DTO 以及将 DTO_DBAddress 对象存储为 sqlite 中的字符串 blob 相关。
  • 在 sqlite 中存储 DTO_DBAddress 对象时遇到问题?什么是 DTO_DBAddress?

标签: c# xamarin sqlite-net-extensions


【解决方案1】:

迟到总比不到好。将其放置给将来需要它的人。

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

using STLiteNetExtensionsAsync.Extensions 没有得到我所依赖的自动完成的建议。我不知道不使用扩展,对象的序列化将不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多