Ho la seguente classe di database
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;
}
}
}
Ma dopo la chiamata
_database.BrandCategories();
Sto arrivando
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.'
Qual è il modo migliore per ottenere elenchi di selezione dal database tramite EF Core? Devo creare una classe POCO per ogni tabella e dopo aver ottenuto i dati convertono la classe POCO nella collezione SelectListItem?
Puoi solo associare a tipi di entità tramite FromSql
, ovvero i tipi che appartengono al tuo contesto. Tuttavia, una volta lì, puoi usare LINQ's Select
per mappare qualcosa come SelectListItem
:
var items = categories.Select(x => new SelectListItem { Value x.Id, Title = x.Name });