可以使用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的数据了。

Entity Framework Core如何根据MySql的JSON字段查询例如查出Order表中Items这个JSON字段的包含ID=1的数据Items的JSON结构是:id1;nameid2; name

原文地址: https://www.cveoy.top/t/topic/bEMm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录