2016-07-11 5 views
0

私はこのような既存のDBスキーマを持っています(変更できません)。両方のテーブルの主キーですエンティティフレームワークでのマッピング

ID CourseID CourseName 
-------------------------- 
1 100023  Course1 
2 100022  Course2 
3 100024  Course3 
4 100023  Course1 

ID

ID Name  CourseID 
------------------------ 
1 Name1  100023 
2 Name2  100023 
3 Name3  100024 
4 Name4  NULL 

Courseがテーブル:私はEFマッピングに

Studentテーブルを行う必要があります。 CourseIDは関係の列です。

データベース(SQL Server)にも明示的な関係はありません。

マッピングを行うために必要なキーとしてCourseIDを指定してEFでマッピングしようとすると、キープロパティとして定義されていないことを示すエラーがスローされます。ヌル可能フィールドなので、Keyプロパティとして追加することはできません。

このマッピングを行う方法はありますか?

+0

あなたはEFコアでそれを行うことができるかもしれないように見える:https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1050579-unique-constraint-ie -candidate-key-support –

+0

@Steveこの関係は直感的ではないようです。多対多関係のように、2つのテーブルしかありません。 –

+0

あなたのマッピングでできるようにそれはいないようですが、あなたはあなたのリポジトリ/データアクセスロジック内でそれを行うためのプライベートメソッドとしてそれを設定することができます。 – krillgar

答えて

0

これは非常に大まかなスキーマです。ただし、coursesテーブルに複合キーを使用できる場合があります。私はそれをテストしていないが、このような何かが動作するはずです。

public class Course 
{ 
    [Key, Column(Order = 0)] 
    public int ID { get; set; } 

    [Key, Column(Order = 1)] 
    public int? CourseID { get; set; } 

    public string CourseName { get; set; } 
} 

public class Student 
{ 
    [Key] 
    public int ID { get; set; } 

    public string Name { get; set; } 

    public int? CourseID { get; set; } 

    [ForeignKey("CourseID")] 
    public Course Course { get; set; } 
} 
関連する問題