0

LinqToEntities を使用しようとしていますが、データ モデルに外部キー フィールドがないことに気付きました。レコードを追加しようとすると、問題が発生するようです。

いろいろ読んでみると、レコードを追加するときに次のようなことができることがわかりました (Product には Categories テーブルへの外部キーがあります)。

Product myProduct = new Product();
myProduct.ProductName = ProductName;
myProduct.Categories = db.CategorySet.Where(c => c.CategoryID == CategoryID).First();
db.AddToProductSet(myProduct);
db.SaveChanges();

これを行うためのより良い方法があると確信しています。しかし、私の質問は本当に、これがLinqToEntitiesでどのように機能するのですか? これは、単純に外部キー (つまり、myProduct.CategoryID = categoryid) を与えるよりもはるかに複雑に思えます。

テーブルに 5 つの外部キーがある場合、それらをリンクするために 5 つのオブジェクトを取得する必要がありますか?

上記を実行することが理にかなっており、メリットがあることはわかりますが、別のテーブルに単一の外部キーを持つデータベースに 1 つのレコードを追加しようとしているだけでは、メリットはありません。

4

1 に答える 1

1

Linq To Entities を初めて使用し、私と同じことを疑問に思っている人のために... はい、これが Linq To Entities の仕組みです。外部キーを与えるだけでなく、実際のオブジェクトを参照する必要があります。

これはパフォーマンスに悪い影響を与えるように思えますが、これまでに行ったことからすると、パフォーマンスはまったく悪くありません。実際、Linq To SQL よりも優れています。

于 2008-12-24T05:43:28.783 に答える