IQueryable<Product> product = objContext.Set<Product>().Include(p =>
p.Categories.Name).Where(p => p.Id == 2);
根据目前的观点,我收到了一个错误。它说添加其他模型的属性。即包括类别模型和相应的名称属性。
@model IEnumerable<>crudOneToMany.Models.Product>
使用viewmodel
,是否可以加入两个表?
错误 指定的包含路径无效。 EntityType“crudOneToMany.Models.Category”未声明名称为“Name”的导航属性。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int CategoryId { get; set; }
public virtual Category Categories { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Product> Products { get; set; }
}
public class ProductDBContext : DbContext
{
public ProductDBContext()
: base("ProductDBContext")
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().HasRequired(o => o.Categories).WithMany(o => o.Products).HasForeignKey(o => o.CategoryId);
base.OnModelCreating(modelBuilder);
}
}
答案 0 :(得分:0)
以下是您提出的ViewModel
。
ProductViewModel.cs
public class ProductViewModel
{
public int Id { get; set; }
[Required(ErrorMessage = "required")]
public string ProductName { get; set; }
public Category Category { get; set; }
public ICollection<Category> Categories { get; set; }
}
请仔细阅读下面提到的关于ViewModel
的文章。如果您有任何问题,请在下面发表评论。我会给予支持。
答案 1 :(得分:0)
你的问题在这里:
.Include(p => p.Categories.Name)
相反,你应该写.Include(p => p.Categories)
这意味着在输出中将会有类别导航集合加载到产品中。
Name
是简单的字符串属性(不是导航属性,因此不应包括在内)