Cascade删除桌面上有多个裁判与实体框架

时间:2014-08-05 11:35:55

标签: c# entity-framework tsql fluent

我有三个对象:

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

0 个答案:

没有答案