2017-10-11 109 views
0

我有三个表 1. SalesDetails有场SalesId,产品编号,数量,价格等 2. SalesPersonDtls有fiels SalesId,SalesPersonId,CommPercentage等 3.业务员有场SalesPersonId,名字,姓氏等实现与实体框架搜索功能

我有第二个表,因为一个销售可以由多个销售人员与分拆佣金一起完成。 我在产品名称,销售日期,销售人员姓名等搜索屏幕上有各种输入。 我将模型类设置为“AsQuaeryable”,并将各种情况和最终结果添加到列表中。 我在搜索标准中有销售人员的姓名,但我不知道如何将其包含在搜索中。你能帮忙吗?

感谢 彼得

+0

首先,我会将您的实际模型复制为代码片段,而不是难以阅读的段落。然后显示您当前的查询。假设你已经定义了导航属性,我会说你可能在寻找'var matches = context.SalesDetails.Select(** Project Your Needed Data Here **)之类的东西。Where(sd => sd.SalesPersons .Any(sp => sp.lastName ==“Jones”&& sp.firstName ==“Peter”)。ToList()'。 –

回答

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")); 

UPDATE: 如果你不能或不想改变你的模型: 首先你需要找到个人通过它的名称,然后搜索到你的“SalesPersonDtls”并获取saleIds。