考虑一下我有一个模特 -
public class Student
{
public int id {get; set;}
public string name {get; set;}
}
我希望使用EF和自定义查询来映射这个(我的实际查询会有很少的连接,而某些条件也在其中)
Select id, name from student
现在我知道我们可以用
完成同样的事情 using(......)
{
var students = Context.Students.SqlQuery("Select id, name from student").ToList<Student>();
.....
}
但是,如果我想要始终将学生与学生一起映射,该怎么办?我可以像使用EntityTypeConfiguration一样使用它。而不是每次访问时都写入查询?
我们是否有类似自定义查询的实体类型配置映射。
(注:EF 6。)
答案 0 :(得分:0)
您根本不必使用SqlQuery
。您的上下文中的Students
属性已经IEnumerable<Student>
,因此您只需在其上调用ToList()
并从db表中获取所有项目。
var students = Context.Students.ToList();
当然,我假设您的上下文设置正确且Students
属性类型为DbSet<Student>
答案 1 :(得分:0)
您所寻求的已经在您的背景下。欢迎来到LINQ和Entityframwork的精彩世界!
这将带回学生:
var Students = (from a in Context.Students select a).ToList();
这将带回他们的ID列表
var Students = (from a in Context.Students select a.id).ToList();
这将带回名叫乔的学生
var Student = (from a in Context.Students where a.name.equals("Joe") select a).ToList);
....等等
您可以对检索到的列表中的项目进行任何更改,并通过调用Context.SaveChanges();
将其推送到数据库