-1

私はこのテーブルとクラスを持っています:

   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");
4

1 に答える 1

0

解決したこの問題は一時的です。

    var NP=new Product(); 
    Context.Porduct.Add(NP);
    Context.saveChanges();
    NP.Types.Add(new ProductTypes
              {
                  Quantity=8
              });
   Context.saveChanges();
于 2017-08-10T10:58:10.900 に答える