You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Sqlite-Net-Pcl创建表时Blob类型报错‘Don't know about...Blob’

解决Sqlite-Net-Pcl中Blob类型字段的创建错误

问题背景

使用CommunityToolkit.Maui、Sqlite-Net-Pcl,针对Android 14开发(Windows平台测试也出现相同问题)。采用Code First方式通过conn.CreateTable<BreedModel>()创建表,原本int、string类型字段正常,添加用于存储图片的Blob类型字段localImage后,出现大量"Don't know about..."错误。

错误触发的代码示例:

public partial class BreedModel : ObservableObject
{
    [ObservableProperty]
    private int id;
    [ObservableProperty]
    private string name;
    [ObservableProperty]
    private string bred_for;
    [ObservableProperty]
    private string breed_group;
    // 其他字段...

    [ObservableProperty]   ///添加此字段后出现问题
    private Blob localImage;
}

解决方案

Sqlite-Net-Pcl并不原生支持Blob类型,SQLite的BLOB类型在.NET中对应的标准类型是byte[](字节数组)。只需将Blob类型替换为byte[]即可解决类型识别错误:

修改后的代码:

public partial class BreedModel : ObservableObject
{
    [ObservableProperty]
    private int id;
    [ObservableProperty]
    private string name;
    [ObservableProperty]
    private string bred_for;
    [ObservableProperty]
    private string breed_group;
    // 其他字段...

    [ObservableProperty]
    private byte[] localImage;
}

补充说明

  • 如果需要指定数据库中列的名称,可以添加[Column]特性,例如:
    [ObservableProperty]
    [Column("local_image")]
    private byte[] localImage;
    
  • 存储图片时,将图片文件转换为字节数组(如通过File.ReadAllBytes()方法)后赋值给LocalImage属性即可;读取时将字节数组转换回图片(如在MAUI中用ImageSource.FromStream(() => new MemoryStream(LocalImage)))。

内容的提问来源于stack exchange,提问作者Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:02:38