私はEntityフレームワークを使用してAsp.net MVCでコードの最初のアプローチを使用しています。 私はProductクラスとUserProductクラスの2つの異なるクラスを使用しているCartクラスを持っています。それらは仮想オブジェクトです。つまり、遅延ロードによって使用されます。続きクラス内の2つのオブジェクトを遅延ロードする - 1つがロードされ、残りがnullのまま残ります。
は私の3クラスです:
public class Cart
{
[Key]
public int Id { get; set; }
public string CartId { get; set; }
public int ProductId { get; set; }
public int UserProducts_Id { get; set; }
public int Count { get; set; }
public System.DateTime DateCreated { get; set; }
public virtual Product Product { get; set; }
public virtual UserProducts UserProducts { get; set; }
}
[Table("dbo.Product")]
public class Product
{
[Key]
public int ProductID { get; set; }
public int ProductTypeID { get; set; }
public string Name { get; set; }
public string SKU { get; set; }
public string Description { get; set; }
public string SpecTitle { get; set; }
public decimal Price { get; set; }
//public Int16 Published { get; set; }
public bool Deleted { get; set; }
public int SiteId { get; set; }
public int UserId { get; set; }
}
[Table("dbo.UserProducts")]
public class UserProducts
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public int ArtworkId { get; set; }
public int ProductId { get; set; }
public decimal ProductPrice { get; set; }
public string ProductDescription { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public string ModifiedBy { get; set; }
public DateTime? ModifiedOn { get; set; }
public bool IsActive { get; set; }
public string ArtworkPath { get; set; }
public int UserId { get; set; }
public int SiteId { get; set; }
}
問題は、私は、データベースからカートをロードする際に製品のオブジェクトがロードされていること、です。しかし、UserProductsオブジェクトはロードされず、nullのままです。以下はその呼び出しです。私も試みた。インクルード(p => p.UserProducts)、それも動作しません。
storeDB.Carts.Where(
cart => cart.CartId == ShoppingCartId).ToList();
これはEFのId命名規則と関係していますか? bcz ProductクラスはProduct IdとしてPKを持ち、CartクラスではFKをProductIdという名前にします。しかし、UserProductsの場合、calssにはIdという名前のPKしかありませんが、CartクラスのFKにはUserProducts_Idという名前が付けられていますか?
はい、これはEF命名規則によって発生します。 [Entity Framework manual Database Change](https://stackoverflow.com/questions/45016287/entity-framework-manual-database-change/45017334#45017334)を参照してください。関連する質問は異なって記述されているため、これを重複としてマークしますが、その答えはあなたの質問にも適用されます。 –
@TahirRauf "public int UserProducts_Id"の代わりに "public int UserProductsId"を使用しようとしました – hasan