SQL Server上でVS2008(.NET 3.5)およびEntity Frameworkを使用しています。私はInclude()
メソッドを使用せずに外部キー列の値を取得してテーブルをリンクすることを望んでいます。エンティティフレームワーク1.0の外部キー値をインクルードメソッドなしで取得します。
たとえば、単純なAuthorにはBooksサンプルが多数あります。
var book = context.Books.First();
int authorId = book.Author.AuthorId;
このシナリオでは、Authorがnullなので、例外がスローされます。著者IDを取得するだけですが、Authorオブジェクトの残りの部分は必要ありません。 BookクラスにはAuthorId
というプロパティはありません。
おそらく、EDMXを直接編集したり、デザイナーから何かを始めるにはどうすればいいのでしょうか?
ありがとう
私は本のエンティティであっAuthorIDされていない驚いています。データベースに外部キーが定義されていますか?もしそうなら、EFモデルジェネレーターがそれを取り上げるべきです。 –
EF4では、外部キーのプロパティを公開せずにエンティティリンクを作成することができます。プロ:エンティティオブジェクトはよりクリーンです。 contra:外部キーの値に簡単にアクセスすることはできません – Eilistraee
私が覚えていれば、EF4にはAuthorIdが含まれていますが、EF1(これは私のものです)ではありません。私が持っているのは、オブジェクトセットの.Include( "Author")を呼び出すときにのみ作成されるAuthorプロパティです。 –