实体框架,努力从列表/集合中撤回和显示信息

时间:2014-09-18 14:37:32

标签: c# entity-framework-5

我一直在网上关注示例,并写了以下内容。组合框工作正常,ID可以恢复正常。

问题1:我是否总是需要使用foreach循环来访问创建的列表中的数据

    impactmodel context = new impactmodel();
    var information = from i in context.Sites
                      where i.Site_ID == value
                      select i;

    foreach (var item in information)
    {
        textBox3.Text = item.Site_DisplayName;
        textBox2.Text = item.Site_Fax_Number.ToString();
    }

现在我知道信息中只有一个结果,但我不能像以下那样访问它:

information.Site_DisplayName;
information.Site_Fax_Numeber.ToString();

当只返回一个结果时,有没有更简单的方法呢?

问题2:我有另一个表,它也在名为contract的实体模型中链接。我认为通过Lazy Loading可以很容易地获得一个值(它与模型中的我的Sites表隐式关联)但是我必须在linq查询中进行连接,将其放入列表然后搞乱一下使用foreach循环来获取值。

有没有更简单的方法来做到这一点?我希望我在这里缺少一些基本的东西。

2 个答案:

答案 0 :(得分:1)

如果您这样做:

var information = context.Sites.Single(x => x.Site_ID == value);

然后information将是您想要的项目,而不是仅包含您想要的单个项目的集合。请注意,如果没有一个项目,这将失败。

答案 1 :(得分:0)

对于第二个问题,请查看.Include("NavigationPropery").Include(x=>x.NavigationProperty)类似

的内容
from o in context.Order.Include(x=>x.OrderRow)
where o.Id == someValue
where 0.OrderRow.Id == someOtherValue
select o