我有一个模型类
public class Student
{
public int StudentId { get; set; }
public string StudentName { get; set; }
public ICollection<SelectListItem> CourseList { get; set; }
}
和
public class StudentContext : DbContext
{
public DbSet<Student> Students { get; set; }
}
我尝试将其用作
List<Student> sList = db.Students.ToList();
我收到了以下错误
\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'SelectListItem' has no key defined. Define the key for this EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'SelectListItems' is based on type 'SelectListItem' that has no keys defined.
请建议我在哪里做错了。
答案 0 :(得分:8)
将[NotMapped]
注释添加到LIST类
[NotMapped]
public List<SelectListItem> ListItems { get; set; }
NotMapped
代码第一约定规定,支持数据类型的每个属性都在数据库中表示。但在您的应用程序中并非总是如此。例如,您可能在Blog类中有一个属性,该属性根据Title和BloggerName字段创建代码。该属性可以动态创建,不需要存储。您可以使用NotMapped注释(例如此BlogCode属性)标记未映射到数据库的任何属性。
[NotMapped]
public string BlogCode
{
get
{
return Title.Substring(0, 1) + ":" + BloggerName.Substring(0, 1);
}
}
上的链接
答案 1 :(得分:2)
您不应该尝试将SelectListItem
存储在数据库中,因为这是MVC特定的概念。而是创建一个自定义实体类并改为使用它;
public class Course
{
public int CourseId { get; set; }
public string CourseTitle { get; set; }
}
public class Student
{
public int StudentId { get; set; }
public string StudentName { get; set; }
public ICollection<Course> CourseList { get; set; }
}
public class StudentContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; }
}