Entity Framework Core如何根据MySql的JSON字段查询例如查出Order表中Items这个JSON字段的包含ID=1的数据Items的JSON结构是:id1;nameid2; name
可以使用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/bEMm 著作权归作者所有。请勿转载和采集!