カテゴリー
Microsoft

Entity Framework で複合主キーを設定する方法

エラーとなったコード

public class User
{
    [Key]
    public int Id { get; set; }
    [Key]
    public int GroupId { get; set; }
    public string Name { get; set; }
}

エラーをよく見てみると

コントローラー作成など、スキャフォールディングすると次のエラーとなりました><。


Microsoft Visual Studio

エラー

選択したコードジェネレータを実行中にエラーが発生しました:

‘Unable to retrieve metadata for ‘WebApplication1.Models.User’. Unable to determine composite primary key ordering for type ‘WebApplication1.Models.User’. Use the ColumnAttribute (see http://go.microsoft.com/fwlink/?LinkId=386388) or the HasKey method (see http://go.microsoft.com/fwlink/?LinkId=386387) to specify an order for composite primary keys.’

OK

エラーのリンクページを訪れてみますと、解決策がございました!

Column 属性の引数に Order を指定すればよいようです♪

OK なコード

public class User
{
    [Key, Column(Order = 1)]
    public int Id { get; set; }
    [Key, Column(Order = 2)]
    public int GroupId { get; set; }
    public string Name { get; set; }
}

これでスキャフォールディングのエラーが発生しなくなりました!

おわりに

エラーで紹介されていたページが、Entity Framework を使ってデータベース操作したい時の設定にとても役に立ちました♪

他にも Entity Framework の使い方を丁寧に解説されているので一読することをお勧めしますわ!

以上です。

コメントを残す