-1
私はこのテーブル&クラスを持っている: EfのコアTPH&関係が問題
public abstract class ProductBase
{
public int Id { get; set; }
}
public class Product:ProductBase
{
public virtual ICollection<ProductType> Types { get; set; } = new HashSet<ProductType>();
public virtual ICollection<OnlineStock> OnlineStocks { get; set; } = new HashSet<OnlineStock>();
}
public abstract class ProductTypeBase
{
[Key]
public int Id { get; set; }
public int ProductId { get; set; }
public int Quantity{ get; set; }
[ForeignKey("ProductId")]
protected virtual Product Product { get; set; }
}
public class ProductType:ProductTypeBase
{
public new Product Product
{
get { return base.Product; }
set { base.Product = value; }
}
}
public class OnlineStock:ProductTypeBase
{
public new Product Product
{
get { return base.Product; }
set { base.Product = value; }
}
public virtual ICollection<ProductTypePicture> Pictures { get; set; } = new HashSet<ProductTypePicture>();
}
私はでProductTypeと新製品を追加したい
。Context.Porduct.Add(new Product
{
Types=new List<ProductTypes>
{
new ProductTypes {Quantity=8}
}
})
efエラー: "タイプ 'ProductType'のオブジェクトを 'OnlineStock'にタイプできません。
とも私はこの設定を持っている:
entityBuilder.Entity<Product>().HasMany(x=>x.Types).WithOne(x=>x.Product).HasForeignKey("ProductId");
entityBuilder.Entity<Product>().HasMany(x=>x.OnlineStocks).WithOne(x=>x.Product).HasForeignKey("ProductId");
また、 'new'を使わないで' virtual'と 'override'を使います。 'new'はメンバを隠すだけです。基本型のプロパティを呼び出すと、他のプロパティを取得します。より複雑なプロジェクトを開始する前に、初心者の本やチュートリアルの相続から始めることをお勧めします。あなたのケースでは、 'Product'プロパティの新規作成とオーバーライドは不要です。 – Tseng
これは**実際の**コードなのですか、質問のために入力したものですか?例外が上記のコードと一致しないように見える – Tseng
@Tseng Actual Codeさらに多くのプロパティがありますが、ナビゲーションプロパティは変更されません。 –