使用 Entity Framework Core 查询 MySQL JSON 字段 - 示例:查找包含特定 ID 的 Items
可以使用 Entity Framework Core 的 Linq 语法来查询 MySQL 的 JSON 字段。
假设有以下的 Order 模型:
public class Order
{
public int Id { get; set; }
public string CustomerName { get; set; }
public string Items { get; set; }
}
其中 Items 字段是一个 JSON 字符串,可以使用 Newtonsoft.Json 库将其转换为对象:
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Order
{
public int Id { get; set; }
public string CustomerName { get; set; }
public List<Item> Items { get; set; }
}
public class OrderContext : DbContext
{
public DbSet<Order> Orders { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>()
.Property(o => o.Items)
.HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject<List<Item>>(v));
}
}
然后可以使用 Linq 语法查询包含 ID=1 的 Item:
var orders = context.Orders.Where(o => o.Items.Any(i => i.Id == 1)).ToList();
这样就可以查询出 Order 表中 Items 字段包含 ID=1 的数据了。
原文地址: https://www.cveoy.top/t/topic/jqnE 著作权归作者所有。请勿转载和采集!