Entity Framework Code First中MySQL longblob对应模型数据类型咨询
在EF Code First中映射MySQL的longblob列
嘿,这个问题我刚好踩过坑!在Entity Framework Code First模型里,MySQL的longblob列最适合映射成.NET的byte[]类型。
原因很直接:longblob本身就是用来存储大容量二进制数据的(比如图片、文件、序列化对象这类内容),而byte[]正好是.NET中表示二进制数据的标准类型,EF和MySQL Connector/NET对这个映射的支持非常稳定,几乎不会出现兼容性问题。
给你贴个实体类的示例:
public class FileRecord { public int Id { get; set; } public string OriginalFileName { get; set; } // 这就是对应longblob的属性 public byte[] FileData { get; set; } }
如果担心EF自动推断列类型时出现偏差,还可以用Fluent API明确指定列类型,这样更稳妥:
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<FileRecord>() .Property(f => f.FileData) .HasColumnType("longblob"); }
另外提醒一句,别尝试用MemoryStream这类流类型直接映射——EF默认不会处理这种类型,而且完全没必要,byte[]已经能满足所有二进制数据的存储和读取需求了。记得确保你的MySQL Connector/NET是较新的版本,避免一些旧版本的小bug。
内容的提问来源于stack exchange,提问作者Trevor Daniel
相关产品推荐
相关产品推荐

