如何通过Entity框架创建关系映射

时间:2009-04-17 14:06:56

标签: entity-framework

我有以下域名模型:

User
{
int Id;
}

City
{
int Id;
}

UserCity
{
int UserId,
int CityId,
dateTime StartDate
}

在我必须将用户附加到城市的功能中,以下代码对我有用:

UserCity uc = new UserCity();

//This is a db hit
uc.User = MyEntityFrameworkDBContext.User.FirstOrDefault(u => u.ID == currentUserId);

//this is a db hit
uc.City = MyEntityFrameworkDBContext.City.FirstOrDefault(c => c.ID == currentCityId);
uc.StartDate = userCityStartDate;

//this is a db hit
MyEntityFrameworkDBContext.SaveChanges();

有没有什么方法可以用一个单独的数据库命中创建关系?实际上,前两个db命中不是必需的。

2 个答案:

答案 0 :(得分:0)

不,因为EF v1.0不支持外键字段。他们将在v2.0(.NET 4.0)中添加它。

答案 1 :(得分:0)

uc.UserReference.EntityKey =
    new EntityKey("MyEntities.Users", "Id", currentUserId);

......和City类似。显然,使用实体模型的正确值替换EntityKey构造函数的参数。请注意,在设置EntityKey后,您将无法引用City或User属性。但是,由于你从未在演出代码中这样做,这对你来说不会有问题。

此外,在您显示的代码中,您永远不会将新实体添加到上下文中。我认为这只是问题中的遗漏。您应该在设置用户和城市之前执行此操作。