2016-09-30 9 views
0

私のウェブサイトのバックハンドがより一貫しているように私はビューを作成しました。それから私はそれを私のエンティティスキーマにマップしようとしました。ビュー、エンティティ、プライマリキーを推論できません

私がメッセージを持っていた:

定義されていません主キーは、主キーを導き出すことができなかった、テーブルには、だから私はものを作っ

を除外しました!私はそれが結合されたときに同一ではない3つの列を組み合わせることによって独特なものであることを確かめました。そして私はその新しい列を "id"と呼んだ。

エンティティdosen'tまあ、私はSQLを使用していた

答えて

0

...エラーメッセージが文句を言わない離れて行くと、私は私の見解をインポートすることはできませんので、私の「ID」のユニークな点に同意しているようです私の "id"列の関数ISNULL(id、)はヌル値ではないので、エンティティはnullになることはないため、潜在的なプライマリキーとして検出することができます。

+0

これはEFの仕事ではありません。 "id"はコードの最初の慣習の後のキーでなければなりません。そうでなければ、データアノテーションや流暢なAPIを使ってキーとして宣言する必要があります。しかし、sqlを使用する必要がある場合、これはDBの最初のアプローチを示唆します。そこには、すべてのテーブルがNOT NULL PK列の組み合わせを持つ必要があります。そのため、メタデータに問題がある場合、EFはモデルが正しくない(メタデータを使用してテーブルを再作成できない)それ。 – DevilSuichiro

+0

私はDBの最初のアプローチを使用してはい、しかし、あなたは、いつも私は何とか私のビュー内の一意のフィールド(主キー)で終わる参照してください。この場合、私は魔法の列を指定する必要はありません潜在的なプライマリキーです、エンティティは私のための仕事をし、フィールドの組み合わせを決定するビューで最高の主キーを代表するだろうが、今回は私は(私はそれが奇妙だが、それは働いた –

+0

EFは "Id"またはTypeName(+ '_')+ "Id"という名前のプロパティを知るだろう作成するプロパティのPKを指定しなければならない場合は、どのプロパティがすべての行の一意の識別子であるかわからないため、他の組み合わせは認識されません。コードを先に実行すると、ヌル入力可能なプロパティ(単一の列にマップ可能)を任意に組み合わせて、データアノテーション/流暢APIを使用してそれらをキーとして指定できます。 – DevilSuichiro

関連する問題