我正在尝试使用Entity Framework 5在VS2010(.Net 4.0)中构建一个Asp.NET MVC 4应用程序(但我知道并非.Net 4.0中支持所有EF5功能),使用脚手架存储库
我有一种我觉得相当片面的关系,一个事件适合TimeSlot。为简单起见,我想将其建模为属性:
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();
即。从数据库中获取TimeSlot,将其分配给事件,然后保存所有内容。
但是,当我尝试保存TimeSlotRepository
时,我得到了例外:
The property 'Id' is part of the object's key information and cannot be modified.
有没有人解释为什么这会尝试编辑TimeSlot.Id属性?
这个问题是否与TimeSlot
没有Event
列表有关?
您是否需要EF中关系的两端才能拥有相反端的属性/列表?