Entity Framework Core(EFCore)提供了許多有用的功能,其中之一就是上下文(DbContext)的 JSON 支持。這個功能允許我們將數據存儲為 JSON 對象,而不是傳統的關系型表格形式。
// 創建 DbContext public class MyDbContext : DbContext { public MyDbContext(DbContextOptions options) : base(options) { } // ... protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .Property(p =>p.Attributes) .HasConversion( v =>JsonConvert.SerializeObject(v), v =>JsonConvert.DeserializeObject >(v)); } } // 創建實體類 public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } public Dictionary Attributes { get; set; } } // 將數據保存為 JSON var product = new Product { Name = "iPhone X", Price = 999, Attributes = new Dictionary { { "color", "black" }, { "storage", "256GB" }, { "warranty", true } } }; await using var dbContext = new MyDbContext(options); await dbContext.AddAsync(product); await dbContext.SaveChangesAsync(); // 獲取 JSON 數據 var products = await dbContext.Products .Where(p =>p.Attributes.ContainsKey("color") && (string)p.Attributes["color"] == "black") .ToListAsync();
以上是使用 EFCore 上下文 JSON 的示例代碼。通過使用 HasConversion() 方法,我們可以將 DbContext 中的屬性轉換為 JSON 字符串并保存到數據庫中。此外,我們還可以像普通屬性一樣檢索和過濾 JSON 數據。
上一篇ef6 查詢json