C# asp.net mvc(迁移)
我在asp.net mvc中创建了crete表,但当我创建迁移时,会显示此错误消息 在表“DailyTransactions”上引入外键约束“FK_dbo.DailyTransactions_dbo.Contracts_Compactd”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误 这是DailyTransactions表:C# asp.net mvc(迁移),c#,sql-server,entity-framework,ef-code-first,database-migration,C#,Sql Server,Entity Framework,Ef Code First,Database Migration,我在asp.net mvc中创建了crete表,但当我创建迁移时,会显示此错误消息 在表“DailyTransactions”上引入外键约束“FK_dbo.DailyTransactions_dbo.Contracts_Compactd”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束。请参阅前面的错误 这是DailyTransactions表: public class DailyTransactions { [Ke
public class DailyTransactions
{
[Key]
public int DailyTransactions_Id { get; set; }
public double Account { get; set; }
public string Account_Name { get; set; }
public double Debit { get; set; }
public double Credit { get; set; }
public DateTime Date { get; set; }
public string Remarks { get; set; }
public int CustomerId { get; set; }
[ForeignKey("CustomerId")]
public virtual Customers customers { get; set; }
public int ContractId { get; set; }
[ForeignKey("ContractId")]
public virtual Contracts contracts { get; set; }
}
本合同表:
public class Contracts
{
[Key]
public int Contracts_Id { get; set; }
public int Contract_Num { get; set; }
public DateTime Contract_Start { get; set; }
public DateTime Contract_End { get; set; }
public string Status { get; set; }
public string TypeOfRent { get; set; }
public double AmountOfRent { get; set; }
public double Total { get; set; }
public int CustomerId { get; set; }
[ForeignKey("CustomerId")]
public virtual Customers customers { get; set; }
public int sectionsId { get; set; }
[ForeignKey("sectionsId")]
public virtual Sections sections { get; set; }
}
尝试关闭
日常交易
和合同
的级联删除
:
modelBuilder.Entity<DailyTransactions>()
.HasRequired(c => c.Contracts)
.WithMany()
.WillCascadeOnDelete(false);
modelBuilder.Entity()
.HasRequired(c=>c.合同)
.有很多
.WillCascadeOnDelete(假);
例如:
public class YourDBContext: DbContext
{
public YourDBContext(): base()
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<DailyTransactions>()
.HasRequired(c => c.Contracts)
.WithMany()
.WillCascadeOnDelete(false);
}
}
public类YourDBContext:DbContext
{
public YourDBContext():base()
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasRequired(c=>c.合同)
.有很多
.WillCascadeOnDelete(假);
}
}
尝试在modelBuilder.Entity()
中添加WillCascadeOnDelete(false)
,因为您没有任何[必需的]
属性注释。我不明白我在哪里添加了它。您需要在OnModelCreating
方法中添加它(我假设您首先使用的是代码)。另外,您可能希望尝试modelBuilder.Conventions.Remove()代码>也是。可能是重复的谢谢,,我解决了错误确定我会试试。@SoftwareDeveloper我很高兴帮助您!:)