无法让我的数据库更新工作

时间:2018-03-14 18:56:26

标签: sql-server database asp.net-core-mvc entity-framework-core

我已经推出了测试版的网站。下一个版本应包含购物车和信用卡结账。在我制作这个购物车的路上,我发现我的旧产品类有几种不同的价格根本不起作用。我需要一个具有一个标识或子类的价格,其中几个价格映射到原始类(我将使用):

       public class Product
    {
    [Key]
    public int ProductID { get; set; }

    [Required(ErrorMessage = "Please enter an product name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Please specify a category")]
    public string Category { get; set; }

    public string SubCategory { get; set; }

    public string Description { get; set; }

    public decimal Price16 { get; set; }

    public decimal Price12 { get; set; }

    public decimal Price8 { get; set; }

    public decimal Price4 { get; set; }


    public decimal PriceEach { get; set; }

    public decimal PriceKg { get; set; }

    public string ProductImageSmallUrl { get; set; }

    public string ProductImageSmallAlternativeDescription { get; set; }

    public string ProductImageSmallContentType { get; set; }

    public string ProductImageLargeUrl { get; set; }

    public string ProductImageLargeAlternativeDescription { get; set; }

    public string ProductImageLargeContentType { get; set; }

    public string ProductImageLargeSecondUrl { get; set; }

    public string ProductImageLargeSecondAlternativeDescription { get;
    set; }

    public string ProductImageLargeSecondContentType { get; set; }

    }

我接下来,很多研究构建了两个类:

   public class Product
   {
    public Product(ICollection<Price> prices)
    {
        Prices = prices;
    }

    [Key]
    public int ProductID { get; set; }

    [Required(ErrorMessage = "Please enter an product name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Please specify a category")]
    public string Category { get; set; }

    public string SubCategory { get; set; }

    public string Description { get; set; }

    public string ProductImageSmallUrl { get; set; }

    public string ProductImageSmallAlternativeDescription { get; set; }

    public string ProductImageSmallContentType { get; set; }

    public string ProductImageLargeUrl { get; set; }

    public string ProductImageLargeAlternativeDescription { get; set; }

    public string ProductImageLargeContentType { get; set; }

    public string ProductImageLargeSecondUrl { get; set; }

    public string ProductImageLargeSecondAlternativeDescription { get;
   set; }

    public string ProductImageLargeSecondContentType { get; set; }

    public ICollection<Price> Prices { get; set; }

   }

  And a price class:

  public class Price
   {
    [Key]
    public int ID { get; set; }
    public int CurrentProductID { get; set; }
    public string Size { get; set; }
    public decimal Value { get; set; }

    public Product CurrentProduct { get; set; }

   }

我有这个DbContext:

    public class ApplicationDbContext : DbContext
    {
    public ApplicationDbContext(DbContextOptions<MokaMokkaDbContext>  
   options)
        :base(options) {}

    public DbSet<Product> Products { get; set; }
    public DbSet<Price> Prices { get; set; }

    protected override void OnModelCreating (ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Price>()
            .HasOne(p => p.CurrentProduct)
            .WithMany(b => b.Prices)
            .HasForeignKey(p => p.CurrentProductID);

    }
   }

我正在尝试写一个种子课:

      public class SeedData
      {
        public static EnsurePopulated(IApplicationBuilder app)
        {
        MokaMokkaDbContext context = app.ApplicationServices
            .GetRequiredService<MokaMokkaDbContext>();
        context.Database.Migrate();
        if(!context.Products.Any())
        {
            context.Products.AddRange(
                new Product
                {
                    Name = "Dobos cake",
                    Category = "Cake",
                    ProductImageSmallUrl = "Dobos.Torta.jpg",
                    ProductImageSmallContentType = "jpg",
                    Prices = new List<Price>()
                });
               }
             }

但是我在我试图创建的产品的红色下划线中遇到以下问题:“没有给出对应于Product.Product(ICollection)所需的形式参数”price“的参数”。

1 个答案:

答案 0 :(得分:1)

我相信你需要Product类中的无参数构造函数。