2013-07-16 72 views
0

我正在使用EntityFramework 5,.NET 4.5 C#。我想將自定義SQL添加到成員DBset。我希望能夠使用下面的語句將方法添加到EntityFramework DBset

RosteringDBContainer db = new RosteringDBContainer(); 
var results = db.Members.Select("dave", "davidson"); //first name and surname 

這應該執行SQL通過NameSurname選擇:

SELECT * 
FROM Member 
WHERE Name='{0}' 
AND Surname='{1}'; 

我知道我可以使用擴展方法和db.Members.Execute("SQL Here");做到這一點,我只是想知道是否有更明確的方式來做到這一點。

Database Diagram

+0

我看沒有什麼會從被阻止你在這裏使用LINQ ... –

+0

LINQ會工作,但我希望能夠使用此方法來執行更復雜的SQL(如調用存儲過程)。另外,由於表格非常大,我很關心LINQ查詢的性能。 –

+0

釘住它@DoanCuong –

回答

3

您可以創建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; 
} 
+0

將LINQ語句執行所需的SQL嗎? –

+0

是的,如果名字和姓氏是會員類別的一部分,如果不是,則需要使用聯接才能進入擁有這些屬性的實體 –

+0

非常好。你能把我鏈接到一篇文章,解釋LINQ如何轉換爲SQL,以便我可以瞭解更多以供將來參考?我想確保它沒有執行SELECT *'然後遍歷結果 –