代码之家  ›  专栏  ›  技术社区  ›  Muflix

从dbContext获取IEnumerable<SelectListItem>

  •  -1
  • Muflix  · 技术社区  · 8 年前

    我有以下数据库类

    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从数据库获取选择列表的首选方法是什么?是否需要为每个表创建POCO类,并在获取数据后将POCO类转换为SelectListItem集合?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Chris Pratt    8 年前

    只能通过 FromSql ,即属于您上下文的类型。但是,一旦到了那里,就可以使用LINQ的 Select 映射到 SelectListItem :

    var items = categories.Select(x => new SelectListItem { Value  x.Id, Title = x.Name });
    
    推荐文章