【问题标题】:ADO.NET Entity Framework multiple statement in where clause or a grouped lambda expressionADO.NET 实体框架 where 子句或分组 lambda 表达式中的多条语句
【发布时间】:2011-03-26 21:11:55
【问题描述】:

我是 ADO.NET 实体框架模型的新手。使用 DotNet Framework 3.5

我有两张桌子:

即。 客户城市

customers表引用了city表中的一个cityname列(外键关系)

在创建 win c# 表单时,我让用户根据他的搜索选择(即姓名、城市、号码等)过滤客户。这是我的结构


using(DataContext dc = new DataContext())  
{  
    IEnumerable cust = dc.customers;  
    if(name != null)    {  
        cust = cust.Where<customers>(c => c.name == name);
    }  
    if(mobile != null)    {  
        cust = cust.Where<customers>(c => c.mobile == mobile);
    }  
    if(city != null)    {
        cust = cust.Where<customers>(c => c.city.cityname == city); //ERROR HERE
    }
}

我得到一个 NullPointerException,因为没有调用 EntityReference.Load 方法。非常合乎逻辑的观点,我同意。 我想要一些关于如何在当前架构中调用 load 方法的建议。是否有可能以某种方式做到这一点:

    c.cityReference.Load();
    c.city.cityname == city

或者可能是一些 lambda 表达式(我是新手),它会引发这两个语句?有什么建议吗? 如果有人有更好的建议,我准备改变当前的架构。

【问题讨论】:

    标签: entity-framework ado.net lambda where-clause


    【解决方案1】:

    试试

    IEnumerable cust = dc.customers.Include("city");  
    

    查看out this 帖子以供参考。

    【讨论】:

    • &lt;&lt;city&gt;&gt; 不是属性的类型,而是属性的名称。
    • 是的。之所以是属性名 insted 是类型名,是因为同一个类型可以有很多导航属性。
    猜你喜欢
    • 2010-11-08
    • 2011-10-21
    • 2011-12-31
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多