我正在尝试用Fluent API实现一对一关系,但暂时没有成功。尤其是在目前不起作用的级联删除上。
需要在Event和Location这两个类之间实现关系。一个事件至少有一个位置,另一方面,一个位置可以归属于不同的事件。
编辑:事件有一个确切的位置,而不是"至少一个"。很抱歉。
当我删除一个事件,并且没有更多的事件使用该位置时,也需要删除该位置。只要位置被事件使用,位置仍然需要存储,因为事件需要一个位置。
这是我的代码:
流利的API
modelBuilder.Entity<Event>()
.HasRequired<Location>(c => c.Location)
.WithMany();
.WillCascadeOnDelete();
类别事件
[Key]
public Guid EventID { get; set; } = Guid.NewGuid();
public string Description { get; set; }
public Location Location { get; set; }
舱位
[Key]
public Guid LocationID { get; set; } = Guid.NewGuid();
public string Description { get; set; }
您需要修改您的Location class和modelBuilder,如下所示。为什么使用Fluent API在课堂上使用DataAnnotation。保持一切在流畅的API是干净得多。
[Key]
public Guid LocationID { get; set; } = Guid.NewGuid();
public string Description { get; set; }
public ICollection<Event> Events {get; set;}
modelBuilder.Entity<Event>()
.HashMany<Location>(e = > e.Events)
.WithRequired(l => l.Location)
.WillCascadeOnDelete();