0

チュートリアルのコードを使用して、実際のプロジェクトで必要なことを試しています。私はテーブルをDataBaseたくさん持っています (16)を使用Foreign Keysして全体を再作成する必要がありますが、今ではこの特定のケースにほとんどこだわっていません。テスト目的で使用しているコードは次のとおりです。DataBaseADO.NET EF

public class Blog
    {
        public int BlogId { get; set; }
        public string Name { get; set; }
        public string Url { get; set; }

        public int UserId { get; set; }
        public virtual User User { get; set; }

        public virtual List<Post> Posts { get; set; }
    }

    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }

        //public int BlogId { get; set; }
        public virtual Blog Blog { get; set; }

        //public int BlogId1 { get; set; }
        public virtual Blog Blog1 { get; set; }

        //public int BlogId2 { get; set; }
        public virtual Blog Blog2 { get; set; }

        //public int BlogId3 { get; set; }
        public virtual Blog Blog3 { get; set; }

        //public int BlogId4 { get; set; }
        public virtual Blog Blog4 { get; set; }
    }

intプロパティは必要ないように見えるので、コメントしました。このコードを実行すると、次のようになります。

ここに画像の説明を入力

現時点で気になる点が 2 つあります。これは 1 つのテーブルに複数を追加する方法ですか。そうであれば、Foreign Keys赤で下線が引かれた 2 つの行です。Blog_BlogIdBlog_BlogId1Blog1_.., Blog2_...

4

1 に答える 1

0

わかりました、解決策を見つけた場所から投稿を失いましたが、この特定のケースでは、コメント付きのコードのコメントを解除し、数字やアンダースコアを使用せずに名前を変更する必要がある命名規則のようです。次に、OnModelCreating必要な回数だけこのコードを追加します。

modelBuilder.Entity<Post>().HasRequired(c => c.Blog)
                                  .WithMany(m => m.Posts)
                                  .HasForeignKey(c => c.BlogId)
                                  .WillCascadeOnDelete();

            modelBuilder.Entity<Post>().HasRequired(c => c.Blogged)
                                          .WithMany()
                                          .HasForeignKey(c => c.BloggedId)
                                          .WillCascadeOnDelete(false);

外部キーの新しいレコードを追加するたびに、プロパティ名とクラス インスタンス名を変更していることに注意してください。

于 2013-02-20T06:39:19.313 に答える