我在SQL Server中有两个表(categories
,subcategories
),我尝试映射这些表以用于Web服务。
表格:类别
id_category | category name
------------+----------------
1 Technology
2 Sport
3 Furniture
表格:子类别
id_subcategory | subcategory_name | id_category
---------------+------------------+-------------
1 Smartphones 1
2 Smart_TV 1
3 Tablets 1
4 sport_gear 2
.
.
.
使用Entity Framework Core 3.1,我将这些实体映射为两个类
[Table("categories", Schema = "Dbo")]
public class Category
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column("id_category")]
public int Id_category { get; set; }
[Column("category name")]
public string Name_category { get; set; }
[NotMapped]
public ICollection<SubCategory> Subcategories { get; set; }
}
[Table("subcategories", Schema = "Dbo")]
public class SubCategoria
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column("id_subcategory")]
public int Id_subcategory { get; set; }
[Column("subcategory_name")]
public string Name_subcat { get; set; }
[NotMapped]
public Category Category { get; set; }
[ForeignKey("Category")]
[Column("id_category")]
public int Id_cat { get; set; }
}
这是我的DbContext
:
public class DataContext : DbContext
{
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Category>()
.HasMany(c => c.Subcategories)
.WithOne(s => s.Category);
}
public DbSet<Category> categories { get; set; }
public DbSet<SubCategory> subcategories { get; set; }
}
问题在于何时需要类别及其子类别
[HttpGet]
public IActionResult Get()
{
return Ok(_context.categories.Include(x => x.Subcategories).ToList());
}
我收到此错误消息:
无效的列名'CategoryId_category'
无效的列名“ CategoryId_category”System.Exception {Microsoft.Data.SqlClient.SqlException}
答案 0 :(得分:0)
解决方案基于DataContext配置
public class DataContext : DbContext
{
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<SubCategory>()
.HasOne<Category>(s => s.Category)
.WithMany(c => c.Subcategories)
.HasForeignKey(s => s.Id_cat);
}
}