自定义SQL映射

时间:2013-11-28 05:31:13

标签: c# entity-framework ef-code-first

考虑一下我有一个模特 -

    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。)

2 个答案:

答案 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();将其推送到数据库