使用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
相关产品推荐
相关产品推荐

