您是否需要在实体框架中指定关系的两端?

时间:2013-07-11 15:22:39

标签: c# entity-framework asp.net-mvc-4 .net-4.0 entity-framework-5

我正在尝试使用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中关系的两端才能拥有相反端的属性/列表?

0 个答案:

没有答案