2016-05-23 10 views
0

私は3つのテーブルがあります。既存のデータベースの設定、機能、およびFacilitySettingOverride。サンプルデータ:最初にEF 7コードでPOCOクラスを作成してください

Settings table 

ID Name  Value 
1 test1 true 
2 test2 true 

Facilities table 

ID Name 
163 Demo1 
164 Demo2 

FacilitySettingOverride 
FacilityId  SettingId Value 
163    2   False 
164    1   False 
164    2   False 

FacilitySettingOverrideには2つの外部キー--- FacilityIdとSettingIdがあります。また、私は、FacilitySettingOverrideの複合キーを作成したいと思います。

私はちょうどそれを作る方法を知らない。私のプライマリコード。

[Table("Settings")] 
public class Setting 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Value { get; set; } 

    public FacilitySettingOverride FacilitySettingOverride { get; set; } 
} 

[Table("Facilities")] 
public class Facility 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<FacilitySettingOverride> FacilitySettingOverrides { get; set; } 
} 

[Table("FacilitySettingOverride")] 
public class FacilitySettingOverride 
{ 
    [Key] 
    [ForeignKey("FacilityId")] 
    public int FacilityId { get; set; } 

    public string Value { get; set; } 
    [ForeignKey("SettingId")] 
    public int SettingId { get; set; } 

    public virtual Facility Facility { get; set; } 
    public virtual Setting Setting { get; set; } 

私は間違っていると思います。手伝ってくれてありがとう。

+0

データベースを持っている場合、あなたは '足場-DbContext'コマンドを使用してモデルを生成することができます。なぜコードファーストを使用しようとしますか? –

+0

私はこのコマンドに慣れていません。 –

+1

これはオーバーライドです:) [この質問](http://stackoverflow.com/q/37354780/861716)? –

答えて

1

データと説明を見ると、SettingsFacilityの両方には、1対多の関連付けがFacilitySettingOverrideになっています。だから、SettingFacilityが持っているだけのように、...

public FacilitySettingOverride FacilitySettingOverride { get; set; } 

を性質を持っている...しかし、FacilitySettingOverrideのコレクションではないはずです。

これは、適切なクラスのモデルでなければならない:KeyAttributeColumnAttribute[Key, Column(Order = 1)])の組み合わせは、複合主キーのために使用される

[Table("Settings")] 
public class Setting 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Value { get; set; }  
    public virtual ICollection<FacilitySettingOverride> FacilitySettingOverrides { get; set; } 
} 

[Table("Facilities")] 
public class Facility 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<FacilitySettingOverride> FacilitySettingOverrides { get; set; } 
} 

[Table("FacilitySettingOverride")] 
public class FacilitySettingOverride 
{ 
    [Key, Column(Order = 1)] 
    [ForeignKey("Facility")] 
    public int FacilityId { get; set; } 

    [Key, Column(Order = 2)] 
    [ForeignKey("Setting")] 
    public int SettingId { get; set; } 

    public virtual Facility Facility { get; set; } 
    public virtual Setting Setting { get; set; } 
    public string Value { get; set; } 
} 

これは、データベーススキーマのEFはそれから作成している:

enter image description here

+0

ありがとう、あなたは人生を救う。 –

関連する問題