代码之家  ›  专栏  ›  技术社区  ›  Petrus Theron

围绕对发票总额抛出“不支持SQL转换”的嵌套查询进行设计

  •  1
  • Petrus Theron  · 技术社区  · 15 年前

    我有一张发票表。我的服务层知道如何计算发票 Total 总计 ,LINQ查询失败,因为“SQL中不支持转换”。这是因为无法对每个发票记录执行嵌套查询。解决这个问题的正确方法是什么?

    总计 InvoiceLines 涉及折扣的表格,字面意思是:

    public decimal Total
    {
        get
        {
            return Lines.Sum(l => l.LineTotal); // Lines provided by repository
        }
    }
    

    总计 在我可以直接筛选的数据库列中。

    发票是不可变的,所以它不应该导致任何数据完整性问题,但我讨厌重复数据。我可以使用一个视图来显示发票总额,但是我的存储库正在执行服务层功能。

    2 回复  |  直到 15 年前
        1
  •  0
  •   Brian Mains    15 年前

    Total是添加到LINQ实体的属性吗?如果是,则不能使用Total属性;这是特别不受支持的。很难将重用的逻辑全部放在一个与数据库相反的LINQ查询中。。。如果您执行根查询,那么在执行查询之后执行额外的任务(可以很容易地调用ToList()),之后的所有处理都将使用LINQ to Objects,您可以随心所欲。

    哦。

        2
  •  0
  •   Petrus Theron    15 年前

    1. 在我的模型中添加了一个缓存的总值,我可以设置它(从而缓存它)或从模型的延迟加载项中计算总值。
    2. 在我的数据库中添加了一个视图来计算总数,这是我的业务逻辑中已经存在的逻辑的重复。但它起作用了。

    现在,我可以根据总数筛选数据,总数由数据库计算并缓存在模型中。

    推荐文章