实体框架v.1中的外键关系

时间:2010-06-14 22:13:21

标签: linq entity-framework foreign-key-relationship

我需要在EF版本1中创建实体数据模型,因为我的Web主机尚未安装Framework 4.0。下面只是一个显示问题的简单示例。

我有3个表,一个Users表,另一个Webpages表和一个带Visits的表。前两个表每个都与Visits表有一对多的关系(它基本上用作多对多关系,只有Visits表有自己的主键和额外字段)

使用4.0版本可行,但不适用于v.1。 “Visits”的计数为0,因此测试字符串返回“”...为什么,以及如何在v.1中访问外键关系?

UsersEntities context = new UsersEntities();
var users = context.Users;
string result = "";
foreach (var user in users)
{
    foreach (var visit in user.Visits)
    {
        result += visit.Webpage.Url + "\n";
    }
}

因此foreach循环遍历用户,它可以正常运行,但内部循环从未输入,因为没有返回任何访问。同样,在Framework 4.0中,它使用相同的数据库工作正常。

那有什么不对?

1 个答案:

答案 0 :(得分:2)

只需将您的代码更改为:

UsersEntities context = new UsersEntities(); 
var users = context.Users.Include("Visits"); 
string result = ""; 
foreach (var user in users) 
{ 
    foreach (var visit in user.Visits) 
    { 
        result += visit.Webpage.Url + "\n"; 
    } 
} 

注意Include(...)告诉EF热切地加载每个用户的访问。

有了它,它应该有用。

实际上,如果网页也是导航,您可能需要:

Include("Visits.Webpage");

希望这有效