我有以下域名模型:
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命中不是必需的。
答案 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属性。但是,由于你从未在演出代码中这样做,这对你来说不会有问题。
此外,在您显示的代码中,您永远不会将新实体添加到上下文中。我认为这只是问题中的遗漏。您应该在设置用户和城市之前执行此操作。