linqToEntitiesクエリに問題があります。クエリ結果に製品がありません。 linqToEntities式で、Productプロパティを持つProductQuantityを正しく返す方法はありますか?Linqと参加しているエンティティへ
public class ProductQuantity
{
public string Id { get; set; }
public string SomeProperty { get; set; }
public Product Product { get; set; }
public Guid ProductId { get; set; }
}
public class Product
{
public Guid Id { get; set; }
public string SomeProperty { get; set; }
//...
}
// MyId is the ProductId I need
// The following will return all productQuantity detail but the Product property will be null
var result = myEntities.ProductQuantities.Include(x => x.Product).Where(x => x.ProductId == MyId)
// The following will work but I want to avoid refilling the object like this :
var result = myEntities.ProductQuantities.Include(x => x.Product).Where(x => x.ProductId == MyId)
.Select(y => new ProductQuantity{ SomeProperty = y.SomeProperty, Product = y.Product});
エンティティへのlinqでこれを行う適切な方法は何ですか?なぜ単に製品がクエリと一緒に返されるだけではないのですか?以上のいずれかを使用したときに私の問題のような
おかげ
EDIT 1
ルック)は(.INCLUDEにreleatedされています。
ただ、前の例ではProductQuantityにカテゴリーを追加します。
//This will return the product but not the category
var result = myEntities.ProductQuantities.Include(x => x.Product).Include(x=> x.Category).Single(x => x.ProductId == MyId)
//This will return the category but not the product
var result = myEntities.ProductQuantities.Include(x => x.Category).Include(x=> x.Product).Single(x => x.ProductId == MyId)
いずれか一方のみを使用することができ、最初のものだけが働いているのはなぜ??????? (ネットで同様の例を見た?)
助けてください?
これはあなたのために何をするのですか? ** myEntities.ProductQuantities.SelectMany(x => x.Product).Where(x => x.ProductId == MyId); ** –
私はEFの経験があまりないのでわからないけどナビゲーションプロパティが正しく設定されていません。[here](https://msdn.microsoft.com/en-us/data/jj713564.aspx)を参照してください。 –
includeは一部のオブジェクトプロパティのみで動作し、他のオブジェクトプロパティは機能しません未知の理由。すべて正しいと思われます... NavigationProperties、キーなどに何も問題はありません....私は動作していないプロパティに対して作業プロパティの違いを見ることはできません。非常に奇妙な – michelqa