0
關係,我有3個表如下:實體框架 - 3個表有相互
ApplicationUser:
public class ApplicationUser : IdentityUser
{
..some basic properties..
// navigation properties
public virtual ICollection<Post> Posts { get; set; }
public virtual ICollection<Album> Albums { get; set; }
}
後:
public class Post
{
public long Id { get; set; }
public string Content { get; set; }
public int? AlbumId { get; set; }
public string UserId { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual Album Album { get; set; }
}
專輯:
public class Album
{
public int Id { get; set; }
public string Name { get; set; }
public string UserId { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
最後ApplicationDbContext:
modelBuilder.Entity<ApplicationUser>()
.HasMany(a=>a.Posts)
.WithRequired(a=>a.User)
.HasForeignKey(a=>a.UserId)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Post>()
.HasKey(p => p.Id);
modelBuilder.Entity<Album>()
.HasKey(a => a.Id);
modelBuilder.Entity<ApplicationUser>()
.HasMany(u=>u.Albums)
.WithOptional()
.HasForeignKey(a=>a.UserId)
.WillCascadeOnDelete();
modelBuilder.Entity<Album>()
.HasMany(a=>a.Posts)
.WithRequired()
.HasForeignKey(p=>p.AlbumId)
.WillCascadeOnDelete();
當我運行遷移和更新數據庫,我得到一個錯誤:
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.Posts_dbo.Albums_AlbumId". The conflict occurred in database "aspnet-Link-20161012104217", table "dbo.Albums", column 'Id'.
誰能告訴我,爲什麼他們衝突?這對我來說似乎很合理。
這是沒有問題的。模型構建器將始終覆蓋FK類型。問題在於違反了FK約束,所以有一些帖子沒有相冊(或者不存在)。 – DevilSuichiro
它的作品,非常感謝你,我認爲「WithRequired」意味着每張專輯必須有博客,結果相反 – LaXuanLinh