0
と関係を持っている:Entity Frameworkの - 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'.
誰もが私に教えてもらえますか?それは私にはかなり正当だと思われる。
あなたがnullable
としてを設定するが、設定で
WithRequeired()
を定義し、あなたのコードで
を。モデルビルダは常にFKタイプをオーバーライドします。問題は、FKの制約に違反しているため、アルバムがない(または存在しない)ポストがあることです。 – DevilSuichiro
それは動作します、ありがとう、私は "WithRequired"は各アルバムがブログを持っている必要があり、 – LaXuanLinh