我已經查看了這一個,我認爲我已經完成了我需要的所有工作,以解決此問題。顯然不是。引入FOREIGN KEY約束可能會導致週期或多個級聯路徑
基本上我有一個國家,地區,目的地。每個地區都必須屬於一個國家。每個目的地都必須屬於一個國家。目的地可以屬於一個地區。
國家>區域>目的地 或 國家>目的地
當我的代碼首先創建了我得到的數據庫臭名昭著:
表上引進國外KEY約束'FK_Destinations_DestinationRegions_DestinationRegionID「目的地」可能會導致週期或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。 無法創建約束。查看以前的錯誤。
這些都是使用EF Code First完成的。
我有一個國家類:
public class DestinationCountry
{
public int ID { get; set; }
public bool Active { get; set; }
[Required(ErrorMessage=" ")]
[DisplayName("Country")]
public string Name { get; set; }
}
和地圖:
public class DestinationCountryMap : EntityTypeConfiguration<DestinationCountry>
{
public DestinationCountryMap()
{
// Primary Key
this.HasKey(t => t.ID);
// Properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(256);
this.ToTable("DestinationCountry");
this.Property(t => t.ID).HasColumnName("ID");
}
}
我有一個區域類:
public class DestinationRegion
{
public int ID { get; set; }
[Required(ErrorMessage = " ")]
[DisplayName("Country")]
public int DestinationCountryID { get; set; }
public string Name { get; set; }
public virtual DestinationCountry DestinationCountry { get; set; }
}
和地圖:
public class DestinationRegionMap : EntityTypeConfiguration<DestinationRegion>
{
public DestinationRegionMap()
{
// Primary Key
this.HasKey(t => t.ID);
// Properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(256);
this.ToTable("DestinationRegion");
this.Property(t => t.ID).HasColumnName("ID");
this.Property(t => t.DestinationCountryID).HasColumnName("DestinationCountryID");
// Relationships
this.HasRequired(t => t.DestinationCountry)
.WithRequiredPrincipal()
.WillCascadeOnDelete(false);
}
}
我有一個目標類:
public class Destination
{
public int ID { get; set; }
[Required(ErrorMessage = " ")]
[DisplayName("Country")]
public int DestinationCountryID { get; set; }
public int DestinationRegionID { get; set; }
public string Name { get; set; }
public virtual DestinationCountry DestinationCountry { get; set; }
public virtual DestinationRegion DestinationRegion { get; set; }
}
和地圖:
public class DestinationMap : EntityTypeConfiguration<Destination>
{
public DestinationMap()
{
// Primary Key
this.HasKey(t => t.ID);
// Properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(256);
this.ToTable("Destination");
this.Property(t => t.ID).HasColumnName("ID");
this.Property(t => t.DestinationCountryID).HasColumnName("DestinationCountryID");
this.Property(t => t.DestinationRegionID).HasColumnName("DestinationRegionID");
this.Property(t => t.Name).HasColumnName("Name");
// Relationships
this.HasRequired(t => t.DestinationCountry)
.WithRequiredPrincipal()
.WillCascadeOnDelete(false);
this.HasOptional(t => t.DestinationRegion)
.WithOptionalPrincipal()
.WillCascadeOnDelete(false);
}
}
可能有人請告訴我如何,我這樣做是錯誤的。
看來這是行不通的。重要的是要記住添加地圖(哎呦): \t modelBuilder.Configurations.Add(new DestinationMap()); \t modelBuilder.Configurations.Add(new DestinationCountryMap()); \t modelBuilder.Configurations。添加(新的DestinationRegionMap()); 我還將「WithRequiredPrincipal」更改爲「WithRequiredDependent」。 – 2012-03-14 19:50:13