2017-01-23 12 views
1

私は私のDBでビューを定義した後、私はコード内でエンティティ定義を書いた:エンティティフレームワークコードまずSQL Serverのビュー

[Persistence] 
    [Table("ADMV_APPLICATION_OPTION")] 
    public partial class ADMV_APPLICATION_OPTION 
    { 
     public string ID_APPLICATION_OPTION { get; set; } 
     public string DS_APPLICATION_OPTION { get; set; } 
     public byte FL_TYPE { get; set; } 
     public Nullable<double> OPTION_NUM_VALUE { get; set; } 
     public string OPTION_STR_VALUE { get; set; } 
     public string OPTION_XML_VALUE { get; set; } 
     public System.Guid GUID_DIVISION_SAP { get; set; } 
     public string ID_DIVISION_SAP { get; set; } 
     public string ID_PLANT { get; set; } 
    } 

私は自分のアプリケーションを実行すると、私はエラーに

を取得

MES.Core.ADMV_APPLICATION_OPTION :: EntityType 'ADMV_APPLICATION_OPTION'にはキーが定義されていません。モデル作成中に1つ以上の検証エラーが検出されました。この エンティティタイプのキーを定義します。

ビューにもキーが必要ですか?

おかげ

+0

PrimaryKeyを追加する必要があり、Entity Frameworkはキーを知る必要があります。 –

+0

また、ビューの? – Galma88

+0

はいビューにもPKが必要です –

答えて

1

あなたのエラーは明らかにあなたが主キーを追加必要があることを伝えます。 EntityFrameworkのビューにもPKが必要です。

Create view SomeView 
As 
    Select 
     IsNull(YourUniqueId, -1) as YourUniqueId, 
     ... 
    From TableName 

またはデータアノテーションの使用[Key]属性を使用して、ID_APPLICATION_OPTIONにこの属性を設定すると、それが一意であることを確認する:あなたはSQLでビューを作成する際には、ISNULLを使用して、いくつかの列がPKとして使用することができる、EFを伝えることができます。

[Persistence] 
    [Table("ADMV_APPLICATION_OPTION")] 
    public partial class ADMV_APPLICATION_OPTION 
    { 
     [Key] 
     public string ID_APPLICATION_OPTION { get; set; } 
     public string DS_APPLICATION_OPTION { get; set; } 
     public byte FL_TYPE { get; set; } 
     public Nullable<double> OPTION_NUM_VALUE { get; set; } 
     public string OPTION_STR_VALUE { get; set; } 
     public string OPTION_XML_VALUE { get; set; } 
     public System.Guid GUID_DIVISION_SAP { get; set; } 
     public string ID_DIVISION_SAP { get; set; } 
     public string ID_PLANT { get; set; } 
    } 
関連する問題