从 dbContext 获取 IEnumerable<SelectListItem>
Get IEnumerable<SelectListItem> from dbContext
我有以下数据库class
namespace Project.Web.Repository
{
public class Database : DbContext
{
public Database(DbContextOptions<Database> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
public virtual DbSet<SelectListItem> SelectListItem {get; set;}
public IEnumerable<SelectListItem> Categories()
{
var query = "SELECT Id as [Value], Name as [Text] FROM enum.Category";
IEnumerable<SelectListItem> items = SelectListItem.FromSql(query).ToList<SelectListItem>();
return items;
}
}
}
但调用后
_database.BrandCategories();
我收到了
Exception has occurred: CLR/System.InvalidOperationException
An exception of type 'System.InvalidOperationException' occurred in Microsoft.EntityFrameworkCore.dll but was not handled in user code: 'The entity type 'SelectListGroup' requires a primary key to be defined.'
通过 EF Core 从数据库中获取 select 列表的首选方法是什么?我是否需要为每个 table 创建 POCO class 并在获取数据后将 POCO class 转换为 SelectListItem 集合?
您只能通过 FromSql
映射到实体类型,即属于您的上下文的类型。但是,一旦到达那里,您就可以使用 LINQ 的 Select
映射到类似 SelectListItem
:
的内容
var items = categories.Select(x => new SelectListItem
{
Value = x.Id,
Title = x.Name
}
);
我有以下数据库class
namespace Project.Web.Repository
{
public class Database : DbContext
{
public Database(DbContextOptions<Database> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
public virtual DbSet<SelectListItem> SelectListItem {get; set;}
public IEnumerable<SelectListItem> Categories()
{
var query = "SELECT Id as [Value], Name as [Text] FROM enum.Category";
IEnumerable<SelectListItem> items = SelectListItem.FromSql(query).ToList<SelectListItem>();
return items;
}
}
}
但调用后
_database.BrandCategories();
我收到了
Exception has occurred: CLR/System.InvalidOperationException
An exception of type 'System.InvalidOperationException' occurred in Microsoft.EntityFrameworkCore.dll but was not handled in user code: 'The entity type 'SelectListGroup' requires a primary key to be defined.'
通过 EF Core 从数据库中获取 select 列表的首选方法是什么?我是否需要为每个 table 创建 POCO class 并在获取数据后将 POCO class 转换为 SelectListItem 集合?
您只能通过 FromSql
映射到实体类型,即属于您的上下文的类型。但是,一旦到达那里,您就可以使用 LINQ 的 Select
映射到类似 SelectListItem
:
var items = categories.Select(x => new SelectListItem
{
Value = x.Id,
Title = x.Name
}
);