-1
EF Core 1.1での遅延読み込みはまだサポートされていませんが、以下のコードはなぜ機能するのですか?私はProductType、ProductSizeのような関連するオブジェクトにInclude関数を使用していませんが、これはエラーを起こしません。EF Core 1.1はこの遅延ロードです
何か考えてください。
List<ProductViewModel> data = await (from s in _context.Product
where ((categorySearchValue == -1 || s.ProductCategoryId == categorySearchValue)
&& (typeSearchValue == -1 || s.ProductTypeId == typeSearchValue)
&& (sizeSearchValue == -1 || s.ProductSizeId == sizeSearchValue))
select new ProductViewModel
{
ProductID = s.ProductId,
ProductName = s.ProductName,
ProductCategory = s.ProductCategory.ProductCategoryName,
ProductType = s.ProductType.ProductTypeName,
ProductSize = s.ProductSize.ProductSizeName,
CurrentQuantity = s.CurrentQuantity,
QuantityPerBox = s.QuantityPerBox,
AvgUnitCost = s.AvgUnitCost,
MainVendor = s.MainSeller.CustomerName,
IncludePBox = (Convert.ToBoolean(s.IsPboxIncluded) ? "Y" : "N"),
Disabled = (s.Inactive ? "Y" : "N"),
IsTaxProduct = (Convert.ToBoolean(s.IsTaxProduct) ? "Y" : "N"),
UnitType = s.ProductUnitType.ProductUnitTypeName
}).ToListAsync();
製品モデルクラスは以下の通りです。
public partial class Product
{
public Product()
{
TransactionLine = new HashSet<TransactionLine>();
TransactionLog = new HashSet<TransactionLog>();
}
public int ProductId { get; set; }
public string ProductName { get; set; }
public int CurrentQuantity { get; set; }
public int AvgUnitCost { get; set; }
public int QuantityPerBox { get; set; }
public int ProductCategoryId { get; set; }
public int? ProductSizeId { get; set; }
public int? ProductTypeId { get; set; }
public int ProductUnitTypeId { get; set; }
public int MainSellerId { get; set; }
public bool IsTaxProduct { get; set; }
public bool IsPboxIncluded { get; set; }
public bool Inactive { get; set; }
public DateTime DateUpdated { get; set; }
public virtual ICollection<TransactionLine> TransactionLine { get; set; }
public virtual ICollection<TransactionLog> TransactionLog { get; set; }
public virtual Customer MainSeller { get; set; }
public virtual ProductCategory ProductCategory { get; set; }
public virtual Product ProductNavigation { get; set; }
public virtual Product InverseProductNavigation { get; set; }
public virtual ProductSize ProductSize { get; set; }
public virtual ProductType ProductType { get; set; }
public virtual ProductUnitType ProductUnitType { get; set; }
}
https://docs.microsoft.com/en-us/ef/efcore-and-ef6/featuresによると、EFコアは遅延読み込みをサポートしていないため、答えは「いいえ」です。 – Eris
ええ、私はそれがサポートされていませんが、明らかに上記のコードは遅延読み込みが動作することを知っています。インクルード関数を使用せずに、上記のコードを参照して関連オブジェクトにアクセスできます。それとも私はここで何か間違ったことを理解した? – superted
エンティティが表示されないか、モデルの作成方法やコンテキストの作成方法などは分かりません。 – Eris