2016-09-08 13 views
0

私のモデル内のあるエンティティから別のエンティティへナビゲートしようとしています。しかし、私はそれが正しいように見えることはできません。ここでEFコードが最初にキーがわかっている多対多の関係

は私の実体である:すべての輸入については

public class Import 
{ 
    public int Id { get; set; } 
    public DateTime Date { get; set; } 
    ... 
} 

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    ... 
} 

public class PersonParameter 
{ 
    public int Id {get;set;} 
    public int PersonId { get; set; } 
    public int ImportId { get;set; } 
    ... 
    public virtual Person Person { get; set; } 
    public virtual Import Import { get; set; } 

} 

public class ImportDetails 
{ 
    public int Id { get; set; } 
    public int PersonId { get; set; } 
    public int ImportId { get; set; } 
    ... 
    public virtual Import Import { get; set; } 
    public virtual Person Person { get; set; } 

    public virtual PersonParameter PersonParameters { get; set; } 

} 

、人はPersonParametersともPersonParametersについて知る必要があるいくつかのImportDetailsのセットを持っています。

今EFはこれが1対多の関係であると考え、データベースの生成時にImportDetail_Idをテーブルに追加します。そうではない。私は、EFにキーを使用させたいと思います。

基本的に私は私のために、このSQLを作成するために、EFが欲しい:

select * from importDetails d 
left join PersonParameter pp on d.importId = pp.importid and d.PersonId = pp.PersonId 

答えて

0

あなたは、N-Mの関係を設定することも地図を使用することができます。
あなたのモデルは理解できませんでしたが、n-m構成はこれと似ているはずです

modelBuilder.Entity<User>() 
    .HasMany<Car>(user => user.OwnedCars) 
    .WithMany(car => car.Owners) 
    .Map(mapping => 
    { 
     mapping.MapLeftKey("OwnerId"); 
     mapping.MapRightKey("CarId"); 
     mapping.ToTable("Owner_Car"); 
    }); 
関連する問題