我有三个对象:
public class Project
{
public int ProjectID { get; set; }
public virtual Currency Currency { get; set; }
public virtual Lilst<Profile> Profiles { get; set; }
}
public class Profile
{
public int ProfileId { get; set; }
public virtual Currency Currency { get; set; }
}
public class Currency
{
public string Country { get; set; }
public string Name { get; set;
}
流畅的配置如下:
modelBuilder.Entity<Project>().HasKey(p => p.ProjectEntityID);
modelBuilder.Entity<Project>().Property(p => p.ProjectEntityID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<Profile>().HasOptional(t => t.Currency).WithOptionalPrincipal().WillCascadeOnDelete(true);
modelBuilder.Entity<Currency>().HasKey(t => t.Name)
.Property(t => t.Name)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Currency类保存应用程序中共享的数据,因此我不希望此表中有任何重复的条目。我试图启用这样的行为,但这可能是另一个问题。我想要实现的是,如果我从Project中删除一条记录,那么引用的Currency应该被级联删除,以及引用的Profile及其对Currency记录的引用。在上面的示例中,如果删除项目记录,则会删除其配置文件和配置文件货币,但不会删除直接从Project引用的记录。
因此,删除项目应删除这些记录
|--Currency
|
Project
|
|-- Profiles -- Currency