0

コードファーストで列をマップして、選択時に入力されるが、挿入または更新時には使用されないようにする方法はありますか?

[NotMapped]アノテーションを適用すると、プロパティ/列にデータが入力されませんが、このアノテーションを追加しないと、挿入時に列が存在しないというメッセージが表示されます。

私が尋ねる理由は、結合を実行して列の値を返すクエリがあるためですが、挿入時にこの列は必要ありません。

何か案は?

乾杯

編集:

私がしていることをもう少し詳しく説明するための更新です。

以前は、2つのテーブルがありました。

Carer
    CarerID
    UserID
    IsPrimary

User
    UserID

しかし、その後、介護者は複数のユーザーに所属できるように要求されたため、以下のようにリンクテーブルを作成する必要がありました。

UserCarer
    UserCarerID
    UserID
    CarerID
    IsPrimary

私がやりたくなかったのは、これを一時的に解決した方法です。エンティティ内にメソッドを作成し、別のコンテキストを初期化して値を取得します。

代わりに、データを選択するときに、左結合を実行しIsPrimaryてUserCarerテーブルから値を取得し、Carer.IsPrimary

すなわちselect * from Carer.*, UserCarer.IsPrimary from Carer left join UserCarer on Carer.CarerID = UserCarer.CarerID where UserCarer.UserID = @p0

HTH

4

1 に答える 1

0

これは、列を計算済みまたは ID (挿入時に自動生成) としてマークした場合にのみ可能ですが、別の結果があります。EF は、更新または挿入後にその列を選択しようとするため、テーブルに存在しない場合でも、エラー。

エンティティではないクラスを設定しようとしているようで、そのようなクラスは永続化に使用できません! クエリにカスタム結合がある場合は、データの投影/表示を行っていることを意味し、結果はおそらくエンティティではありません = 変更の保存には使用しないでください。

于 2012-05-03T12:01:30.507 に答える