C# 向EntityFramework数据库集添加方法
我正在使用EntityFramework 5、.NET 4.5 C。我想向成员数据库集添加自定义SQL。我希望能够使用以下语句按名称和姓氏进行选择C# 向EntityFramework数据库集添加方法,c#,sql,entity-framework,entity-framework-5,.net-4.5,C#,Sql,Entity Framework,Entity Framework 5,.net 4.5,我正在使用EntityFramework 5、.NET 4.5 C。我想向成员数据库集添加自定义SQL。我希望能够使用以下语句按名称和姓氏进行选择 RosteringDBContainer db = new RosteringDBContainer(); var results = db.Members.Select("dave", "davidson"); //first name and surname 这将执行SQL: SELECT * FROM Member WHERE Name='{
RosteringDBContainer db = new RosteringDBContainer();
var results = db.Members.Select("dave", "davidson"); //first name and surname
这将执行SQL:
SELECT *
FROM Member
WHERE Name='{0}'
AND Surname='{1}';
我知道我可以在这里使用扩展方法和db.Members.ExecuteSQL;,我只是想知道是否有更明确的方法来做到这一点
您可以为RosteringDBContainer.Members创建扩展方法,并使用linq获得所需结果,代码如下所示:
public static IEnumerable<Member> SelectMembers(this DbSet<Member> members, string name, string surname)
{
return from m in members
where m.Name == name and m.Surname == usrname
select m;
}
您可以为RosteringDBContainer.Members创建扩展方法,并使用linq获得所需结果,代码如下所示:
public static IEnumerable<Member> SelectMembers(this DbSet<Member> members, string name, string surname)
{
return from m in members
where m.Name == name and m.Surname == usrname
select m;
}
我看不到任何东西会阻止您在这里使用LINQ…LINQ可以工作,但我希望能够使用此方法执行更复杂的SQL,例如调用存储过程。另外,由于表非常大,我关心LINQ查询的性能。存储过程是一个有效的参数。关于“性能”难题,我会首先尝试LINQ版本,除非查询非常复杂,生成的SQL相当不错,检查执行计划,看看这些方法之间是否有任何真正的区别。我看不到任何东西会阻止您在这里使用LINQ…LINQ可以工作,但我希望能够使用此方法执行更复杂的SQL,例如调用存储过程。另外,由于表非常大,我关心LINQ查询的性能。存储过程是一个有效的参数。关于“性能”难题,我首先会尝试LINQ版本,除非查询非常复杂,生成的SQL相当不错,检查执行计划,看看这些方法之间是否有真正的区别。LINQ语句会执行所需的SQL吗?是的,如果名称和姓氏是成员类的一部分,如果没有,则需要使用联接来访问包含这些属性的实体Excellent。你能把我链接到一篇解释LINQ如何转换成SQL的文章上吗?这样我就可以了解更多信息,以备将来参考?我想确保它没有执行SELECT*然后迭代结果它使用EXPRESSION树解析将linq查询转换为sql,这里是一个快速概述这里是一个链接,如果您想查看生成的查询,linq语句会执行所需的sql吗?是,如果名称和姓氏是成员类的一部分,如果没有,则需要使用联接来访问包含这些属性的实体Excellent。你能把我链接到一篇解释LINQ如何转换成SQL的文章上吗?这样我就可以了解更多信息,以备将来参考?我想确保它没有执行SELECT*然后对结果进行迭代它使用EXPRESSION树进行解析以将linq查询转换为sql,这里是一个快速概述如果您想查看生成的查询,这里是一个链接