mysql EF Core -从多个表创建报告表

ehxuflar  于 2022-12-26  发布在  Mysql
关注(0)|答案(1)|浏览(149)

我有一个报告,我需要发送到我的react前端,需要很容易查询和搜索。问题是与目前的方法,我们需要拉所有整个数据库之前,执行查询,由于嵌套对象和其他因素。
为了显著加快该过程,我希望创建一个报告表/视图,以便在其他表发生更改时从中进行查询。
下面是模型的一个小示例:

public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }

        public int TypeId { get; set; }
        public ItemType Type { get; set; }

        public int OrderId { get; set; }
        public Order Order { get; set; }
        
    }
    public class ItemType
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Item> Items { get; set; }
    }

    public class Order
    { 
        public int Id { get; set; }
        public Customer Customer { get; set; }
        public List<Item> Items { get; set; }
    }

    public class ItemReport
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public string Type { get; set; }
        public string Customer { get; set; }

        public ItemReport(Item item)
        { 
            Name = item.Name;
            Description = item.Description;
            Type = item.Type.Name;
            Customer = item.Order.Customer.Name;

        }
    }

ItemReport是我用来发送到前端的模型,我读了很多关于无键实体和视图的书,但是我需要一些指导来把所有的部分放在一起。
目前,我们将从客户中提取所有Item和必填字段(如Name),并将其转换为ItemReport的IEnumerable列表,然后进行过滤/排序或搜索。
作为一个侧记,可能有其他的解决方案比我张贴的,我会开放以及。
我已经研究了这一点相当多,但我不认为我找到了正确的解决方案作为一个例子时,阅读的意见,他们提到他们如何不能插入或更新与EF核心。

ztigrdn8

ztigrdn81#

这是一个简单的投影。在构造函数中传递item不是正确的方式,因为EF核心无法查看编译后的方法体。

var query = context.Items
    .Select(item => new ItemReport
    {
        Name = item.Name;
        Description = item.Description;
        Type = item.Type.Name;
        Customer = item.Order.Customer.Name;
    });

相关问题