我想要完成的任务: 我基本上希望NWatchNode有一组关系。 然后,每个关系应该有一个Node,一个RelatedNode和一个RelationType。
以下是我收到的错误消息:
无法创建类NWatch.Entities.Test.NWatchTagTest的实例。 错误:System.Data.SqlClient.SqlException:介绍FOREIGN KEY 约束' FK_dbo.NWatchRelations_dbo.NWatchNodes_RelatedNodeId'上 表' NWatchRelations'可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他 FOREIGN KEY约束。
我在这里做错了什么,或者如何正确映射?
以下是我的映射:
// NWatchRelation
modelBuilder.Entity<NWatchRelation>().Map(m =>
{
m.ToTable("NWatchRelations");
});
modelBuilder.Entity<NWatchRelation>()
.HasKey(t => t.Id)
.Property(t => t.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<NWatchRelation>().HasRequired(t => t.Node).
WithMany().HasForeignKey(t => t.NodeId).WillCascadeOnDelete();
modelBuilder.Entity<NWatchRelation>().HasRequired(t => t.RelatedNode).
WithMany().HasForeignKey(t => t.RelatedNodeId).WillCascadeOnDelete();
// NWatchNode
modelBuilder.Entity<NWatchNode>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("NWatchNodes");
});
modelBuilder.Configurations.Add(new NWatchObjectBaseConfiguration<NWatchNode>());
modelBuilder.Entity<NWatchNode>().HasKey(t => t.Id).
Property(t => t.Id).
HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<NWatchNode>().HasRequired(t => t.NodeTypeEntity).
WithMany(t => t.Nodes).HasForeignKey(t => t.NodeTypeId);
modelBuilder.Entity<NWatchNode>().HasMany(t => t.Tags).WithMany(t => t.Nodes);
modelBuilder.Entity<NWatchNode>().HasMany(t => t.MonRequests).WithMany(t => t.Nodes);
modelBuilder.Entity<NWatchNode>().HasMany(t => t.Relations);
modelBuilder.Entity<NWatchNode>().Property(t => t.Location).IsOptional().HasMaxLength(100);
modelBuilder.Entity<NWatchNode>().Ignore(t => t.SourceDefinitions);
modelBuilder.Entity<NWatchNode>().Ignore(t => t.NodeType);