我的实体框架存在问题,这让我有点疯狂。
我有两个模型如下:
public class Day
{
[Key]
public int ID {get; set;}
[Required]
public int Name {get; set;}
public virtual ICollection<Event> Events {get; set;}
}
public class Event
{
[Key]
public int ID {get; set;}
[Required]
public string Name {get; set;}
public string Description {get; set;}
public virtual ICollection<Day> Days {get; set;}
}
我指定的是'事件'有一个'日'列表,反之亦然。
现在'Event'是一个不断添加行的表,而'Day'是一个只包含5个静态行的表(星期一 - 星期五)
EF上下文还实现了如下模型构建:
modelBuilder.Entity<Event>()
.HasMany<Day>(s => s.Day)
.WithMany(c => c.Events)
.Map(cs =>
{
cs.MapLeftKey("EventId");
cs.MapRightKey("DayId");
cs.ToTable("EventDays");
});
现在出现问题如下:
当我在上下文中添加一个'Event'对象时,其中包含一个'Days'列表,除了添加到'EventDays'表中的条目之外,行将被添加到'Days'表中选定的日子。
下图显示了输出的数据:
为什么会这样?
在我看来,行只应添加到链接表中,在本例中是“EventDays”表。
任何帮助都会非常感激,因为我找不到其他人遇到这个特殊问题:/
由于
更新:
当我从数据库中检索日期并手动将它们添加到事件模型时,一切正常。
这是为什么?当我之前使用实体框架时,您可以只使用嵌套对象添加模型,它会自动附加它们而不是添加更多条目。