【问题标题】:MVC Scaffolding not showing fields on view in EF Core 2.0MVC 脚手架未在 EF Core 2.0 中显示字段
【发布时间】:2017-10-22 17:29:56
【问题描述】:

我目前正在尝试学习 .NET core 2.0 和 ASP.NET,并在项目中采用代码优先的方法。

问题是视图(/Packages/)没有显示类别,即使它们在课堂上被标记为[必需],脚手架不知何故忽略了它,只是在没有它的情况下创建视图。

这是一个大问题,因为如果您尝试编辑或添加新条目,它只会挂在那里,因为类别是数据库中的必填字段。不用说,它也没有显示产品列表......我错过了什么?

Package.CS

public class Package
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int Price { get; set; }
    [Required] public virtual Category Category { get; set; }
    public virtual ICollection<Product> Products { get; set; }

}

Category.CS

public class Category
{
    public int ID { get; set; }
    public string Name { get; set; }
}

Product.CS

public class Product
{
    public int ID { get; set; }
    public string SKU_ID { get; set; }
    public Category Category { get; set; }
    public int Price { get; set; }
    public int Cost { get; set; }

    public List<Variation> Variations { get; set; }
}

DatabaseContext.CS

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

    public DbSet<Brand> Brands { get; set; }
    public DbSet<Category> Categories { get; set; }
    public DbSet<Combo> Combos { get; set; }
    public DbSet<Order> Orders { get; set; }
    public DbSet<Package> Packages{ get; set; }
    public DbSet<Product> Products { get; set; }
    public DbSet<User> Users { get; set; }
    public DbSet<Variation> Variations { get; set; } 
}

我什至尝试过使用和不使用

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    #region Package -> Product Relationship
    modelBuilder.Entity<Package>()
        .HasMany(x => x.Products);

    modelBuilder.Entity<Package>()
       .HasOne(xa => xa.Category);
    #endregion
}

这就是视图的外观:

View At Packages

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-core entity-framework-core


    【解决方案1】:

    好的,回答我自己的问题,并希望如果像我这样的新人遇到同样的问题,知道如何解决它。

    原来我没有在我的模型上正确实现关系,所以 Entity Framework 不确定它是否真的是一个关系或者它到底是什么......

    因此,简而言之,您必须让所有交互的类都知道它们的字段将被使用以及由谁使用。

    Package.CS

    public class Package
        {
            public int PackageId { get; set; }
            public string Name { get; set; }
            public string Description { get; set; }
            public int Price { get; set; }
            public int CategoryID { get; set; }
    
    
            [Required]
            public virtual Category Category { get; set; }
            public virtual ICollection<Product> Products { get; set; }
    
        }
    

    请注意,您还必须让您打算使用其他类的模型知道哪个字段是键。就我而言:

    public int CategoryID { get;放; }

    Category.CS

    public class Category
        {
            public int CategoryId { get; set; }
            [Required]
            public string CategoryName { get; set; }
    
            public virtual ICollection<Package> Packages { get; set; }
        }
    

    几乎这些都是我必须对模型进行的所有更改。

    如果出于某种原因,您只是获得了要显示在 选择视图,不要惊慌。只是表示您忘记标记为 [必填] 文本字段。 [你不能允许空值]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2022-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多