我正在尝试使用 Entity Framework 5 在 VS2010 (.Net 4.0) 中构建一个 Asp.NET MVC 4 应用程序(但我知道 .Net 4.0 中并非所有 EF5 功能都支持),使用脚手架存储库。
我有一种我觉得相当片面的关系,一个事件适合一个时间段。为简单起见,我想将其建模为一个属性:
public class Event
{
public int Id { get; set; }
public int TimeSlotId { get; set; }
[ForeignKey("TimeSlotId")]
public TimeSlot TimeSlot { get; set; }
}
public class TimeSlot
{
public int Id { get; set; }
public int StartHour { get; set; }
//... more plain int properties
}
但是,我似乎根本无法让它工作!当我在数据库中预填充 TimeSlots 表时,我尝试执行以下操作:
var EventRep = new EventRepository();
var TimeSlotRep = new TimeSlotRepository();
var times = TimeSlotRep.All.GetEnumerator();
times.MoveNext();
var a = new Event { TimeSlot = times.Current };
EventRep.InsertOrUpdate(a);
EventRep.Save();
TimeSlotRep.Save();
即从数据库中获取一个时间段,将其分配给一个事件,然后保存所有内容。但是,当我尝试保存时TimeSlotRepository
,出现异常:
The property 'Id' is part of the object's key information and cannot be modified.
有没有人解释为什么这会尝试编辑 TimeSlot.Id 属性?这个问题是否与没有 s 列表
的事实有关?
您是否需要 EF 中关系的两端才能拥有另一端的属性/列表? TimeSlot
Event