我试图更新子实体,但在父级和子级之间创建了外键关系。我为子实体创建了一个存储库,当我尝试在没有首先拉动父项的情况下将子项插入数据库时,外键列是空的。这是我的场景。无法通过实体框架中的父级更新子实体
父实体数据库表
public class YogaSpace
{
public int YogaSpaceId { get; set; }
//other members here
public virtual ICollection<YogaSpaceEvent> Events { get; set; }
}
子实体
public class YogaSpaceEvent
{
public int YogaSpaceEventId { get; set; }
public string Title { get; set; }
public DateTime DateTimeScheduled { get; set; }
public int AppointmentLength { get; set; }
public int StatusEnum { get; set; }
}
YogaSpaceEvent它创建了一个名为 'YogaSpace_YogaSpaceId' 持有的外键父母YogaSpace的ID列。
所以,现在如果我想在这里直接使用新创建的回购在表中插入新的YogaSpaceEvent。
//calling yogaspaceeventrepo to insert directly into child entity table
yogaSpaceEventRepository.Add(Convert.ToInt16(id), title, dateWithTime, Convert.ToInt16(duration));
yogaSpaceEventRepository.Save();
我没有通过c#访问为'YogaSpace_YogaSpaceId'添加一个值,所以列值为空。
YogaSpaceEvent表
我必须去,用我的父实体“YogaSpace”库,并获取了“YogaSpace”,然后添加一个新的“YogaSpaceEvent”给它。这就像两个步骤和另一个从数据库获取,但它的工作原理。
有没有另一种方法可以直接将'YogaSpaceEvent'插入表中,而无需通过父实体'YogaSpace'?有没有另一种方法可以使用代码优先属性来执行此操作,即使存在外键关系?
请您举例说明一下吗?我不能只是添加一个新的属性到YogaSPaceEvent,它会创建一个新的列。 – user1186050 2015-04-03 07:42:15