2

Entity Framework 4.1を使用して、intのコレクションを取得しようとしています。

基本的に私はSpecと呼ばれるエンティティを持っています

public class Spec {
   public int Id{get;set;}
   public string Name {get;set;}
   public ICollection<int> TypeIds {get;set;} 
}

テーブルSpecsにはColumnsid、Nameなどがあり、TypeIdsを列specId TypeIdを使用してテーブルSpecTypesにマップしようとしていますが、そのマッピングを理解できません。

私はこのようなものを結び続けてきました

modelBuilder.Entity<Spec>().HasMany(r => r.TypesIds)
       .WithMany()
       .Map(m => m.ToTable("SpecTypes")
          .MapLeftKey("SpecId")
          .MapRightKey("TypeId"));
4

2 に答える 2

1

あなたの説明に基づいて、おそらくこのような一対多の関係をしたいと思うでしょう。通常、モデルビルダーを使用する必要があるのは、クラス定義では実行できない複雑なマッピングを解決することだけです。

public class Spec {
   public int Id{get;set;}
   public string Name {get;set;}
   public SpecType SpecType {get;set;} 
}


public class SpecType {
   public int Id{get;set;}
   public ICollection<Spec> Specs {get;set;}
}
于 2012-02-07T02:19:36.530 に答える
1

プリミティブ値のコレクションへのナビゲーション プロパティを持つことはできないと思います。Id プロパティを含み、これらのコレクションを持つエンティティを作成するだけでよいと思います。したがって、多かれ少なかれ次のようなものになります。

public class Spec { 
   public int Id{get;set;} 
   public string Name {get;set;} 
   public ICollection<TypeEntity> TypeIds {get;set;}  
} 

public class TypeEntity { 
   public int Id {get;set;} 
} 
于 2012-02-06T23:28:32.847 に答える