Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向EntityFramework数据库集添加方法_C#_Sql_Entity Framework_Entity Framework 5_.net 4.5 - Fatal编程技术网

C# 向EntityFramework数据库集添加方法

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='{

我正在使用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='{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,这里是一个快速概述如果您想查看生成的查询,这里是一个链接