【问题标题】:Implement search functionality with Entity Framework使用实体框架实现搜索功能
【发布时间】:2017-10-11 16:42:56
【问题描述】:

我有三张桌子

  1. SalesDetails 包含 SalesId、ProductId、Qty、Price 等列
  2. SalesPersonDtls 包含 SalesId、SalesPersonId、CommPercentage 等列
  3. SalesPerson 包含 SalesPersonId、firstName、lastName 等列

我有第二张桌子,因为一次销售可以由多个销售人员一起完成,并分摊佣金。

我在搜索屏幕中有各种输入,例如产品名称、销售日期、销售人员姓名等。

我将模型类设置为“AsQueryable”,并添加各种 where 条件,最后将结果添加到列表中。

我在搜索条件中有销售人员的姓名,但我不知道如何将其包含到搜索中。你能帮忙吗?

谢谢 彼得

【问题讨论】:

  • 首先,我会将您的实际模型复制为代码 sn-ps 而不是难以阅读的段落。然后显示您当前的查询。盲目拍摄并假设您已定义导航属性,我会说您可能正在寻找类似 @​​987654324@ 的东西。

标签: entity-framework search


【解决方案1】:

彼得
如果我猜对了,你的商业模式的关系是这样的:

人 (n) (1) 销售 (1) (n) 详情
您将销售和人员关系放在“SalesPersonDtls”中,将销售和详细关系放在“SalesDetails”中。我认为最好稍微改变你的实体,如果你想在你的项目变得更大和更复杂时获得更好的结果。
您的实体应该是这样的:

    Sale
    {
        List<SalesDetail> details;
        List<Person> persons;
        ...
    }
    SalesDetail
    {
       Sale
       ...
    }
    Person
    {
       Sale
       name
       ...
    }



现在真的很简单,如果您想要与 personName 相关的销售:

sales.Where(sale => sale.Persons.Any(person => person.PersonName == "your input name"));

更新: 如果您不能或不想更改模型: 首先,您需要通过姓名查找 personId,然后搜索您的“SalesPersonDtls”并获取 saleIds。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多