【发布时间】:2021-05-30 03:12:21
【问题描述】:
我的项目中有以下实体,尝试更新我的数据库(SQL Server)时出现错误。我查看了堆栈溢出,看到有些人遇到了和我完全相同的问题,但是当我尝试他们的修复时,我仍然得到同样的错误。我已经解决这个错误一段时间了,我似乎不知道到底是什么问题。请我想我可能需要一些帮助来解决这个问题。
我的AppUser 实体:
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Bio { get; set; }
public string City { get; set; }
public DateTime CreatedAt { get; set; }
public virtual ICollection<Job> CreatedJobs { get; set; }
public virtual ICollection<Job> AssignedJobs{ get; set; }
public string Avatar { get; set; }
public virtual ICollection<Watch> Watching { get; set; }
public string Tagline { get; set; }
public Socials Socials { get; set; }
public virtual ICollection<Skill> SkillSet { get; set; }
public virtual ICollection<Language> Languages { get; set; }
}
我的Job 实体
public class Job
{
public Guid Id { get; set; }
public virtual ICollection<Photo> Photos { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[Column(TypeName = "decimal(18,2)")]
public decimal InitialPrice { get; set; }
public string UserId { get; set; }
public virtual ApplicationUser User { get; set; }
public string AssignedUserId { get; set; }
public virtual ApplicationUser AssignedUser { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime DeliveryDate { get; set; }
public virtual ICollection<Bid> Bids { get; set; }
public virtual ICollection<Watch> Watching { get; set; }
public string Address{ get; set; }
public DeliveryTypes DeliveryType { get; set; }
public string PostCode { get; set; }
public int Views { get; set; }
public Category Category { get; set; }
public JobStatus JobStatus { get; set; }
}
我为我的表配置做了什么:
modelBuilder.Entity<ApplicationUser>()
.HasMany(c => c.CreatedJobs)
.WithOne(t => t.User)
.HasForeignKey(t => t.UserId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<ApplicationUser>()
.HasMany(c => c.AssignedJobs)
.WithOne(t => t.AssignedUser)
.HasForeignKey(t => t.AssignedUserId)
.OnDelete(DeleteBehavior.NoAction);
我已经尝试了所有的 DeleteBehavior 值,但似乎都没有。
我仍然收到错误 -
Microsoft.EntityFrameworkCore.Database.Command[20102] 执行 DbCommand 失败 (28ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] ALTER TABLE [Jobs] 添加约束 [FK_Jobs_AspNetUsers_UserId] 外键 ([UserId]) 引用 [AspNetUsers] ([Id]) 删除 级联;执行 DbCommand 失败 (28ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] ALTER TABLE [作业] 添加 约束 [FK_Jobs_AspNetUsers_UserId] 外键 ([UserId]) 参考 [AspNetUsers] ([Id]) 删除级联; Microsoft.Data.SqlClient.SqlException (0x80131904):介绍 表 'Jobs' 上的 FOREIGN KEY 约束 'FK_Jobs_AspNetUsers_UserId' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束或索引。见上 错误。
我知道以前有人问过这个问题。我已经尝试了人们建议的修复方法,但在我的情况下似乎不起作用,因此我觉得有必要再次询问。
【问题讨论】:
-
您能分享一下您对这些领域模型的迁移历史吗?我认为它的迁移版本问题。你添加了一个迁移然后你添加了级联删除的东西,所以它仍然在第一个中断
-
哦..好的,我应该删除之前的迁移直到我添加级联?
-
首先运行 Update-Database –TargetMigration:
然后 remove-migration name_of_bad_migration 现在添加一个新的迁移,如果它可以帮助我将其标记为答案
标签: c# asp.net-core .net-core entity-framework-core