我已经查看了这一个,我认为我已经完成了我需要的所有工作,以解决此问题。显然不是。引入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