12

私は次のモデルを持っています

public class PageConfig : Base
{
    // Properties Etc..

    public ICollection<Image> ScrollerImages { get; set; }
}

私のアプローチは、ジャンクション テーブル { PageConfigID, ImageID } を使用してバインドすることです。

私のモデルバインダーでは、次のことを試しました..

modelBuilder.Entity<PageConfig>()
    .HasMany(x => x.ScrollerImages)
    .WithMany()
    .Map(x =>
    {
        x.ToTable("junc_PageConfigScrollerImages");
        x.MapLeftKey("PageConfigID");
        x.MapRightKey("ImageID");
    });

その結果、画像の null コレクションが生成されます。

これらの画像を PageConfig モデルにバインドするにはどうすればよいですか?

編集

問題のほとんどは、ユーザー エラーによるものでした。jicこれはあなたに起こります..

データベースのキー制約が正しく設定されていることを確認してください。
モデルの ICollection は仮想である必要があります。

4

2 に答える 2

1

http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspxごと:

「...Fluent API を使用して、以下に示すように Student エンティティ クラスを使用して 1 対多の関係を構成できます。」

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
            //one-to-many 
            modelBuilder.Entity<Student>()
                        .HasRequired<Standard>(s => s.Standard)
                        .WithMany(s => s.Students)
                        .HasForeignKey(s => s.StdId);

    }

「...HasRequired メソッドの代わりに HasOptional メソッドを使用して、外部キー列を null 可能にします。」

したがって、次のようなものを探しているでしょう:

modelBuilder.Entity<Image>()
            .HasOptional<PageConfig>(x => x.PageConfig)
            .WithMany(x => x.ScrollerImages)
            .HasForeignKey(x => x.PageConfigId)
于 2015-05-12T21:44:33.377 に答える