2014-08-30 58 views
0

我試圖使用LINQ在我的項目到SQL和我有一個問題產生:的LINQ to SQL:類來自查詢

其實這裏是我的測試代碼:

DataContext dc; 
var result = dc.ExecuteQuery<myClass>(string.Format(@" 
    SELECT 
     FieldA, FieldB, FieldC, FieldD 
    FROM 
     mySqlTable 
    WHERE 
    FieldA > 10 
    ORDER BY FieldA 
")); 

和我myClass聲明:

public class myClass 
{ 
    public int FieldA { get; set; } 
    public string FieldB { get; set; } 
    public int FieldC { get; set; } 
    public int FieldD { get; set; } 

    public myClass() 
    { 
    } 
} 

問題:是否有自動模式,以創建首次類的聲明? (現在我手工製作)

+1

如果你使用'ExecuteQuery'與SQL字符串,你沒有真正使用LINQ2SQL。你可以使用[Dapper生成一個POCO](https://github.com/StackExchange/dapper-dot-net)(普通的舊C#對象)這是StackOverflow自己使用的。 – Andomar 2014-08-30 11:53:20

+1

@andomar好,小巧可以*填充* POCO;它不會創建C#。然而,你可以使用'dynamic' - 然後你甚至不需要POCO - 非常適用於本地使用數據的查詢,例如在同一個方法中,而不是將對象返回幾層。 – 2014-08-30 12:01:34

+0

@MarcGravell:I必須記得Dapper比它更棒!:) Dapper可以返回一個屬性包嗎?說一個字典列表,'[{'id':1,'name':'bert'},{'id':2,'name':'ernie'},...]'。使用物業包,OP不必聲明C#類。 – Andomar 2014-08-30 12:07:28

回答

1

創建類的自動模式可以通過以下方式在edmx中進行調整。這裏有兩個模型生成xxxx.Context.tt和xxxx.tt.所以,每當你在數據庫中進行更改並自動更新edmx時,他們都會更新xxxx.Context.tt和xxxx.tt。

你可以在這裏看看如何創建它。 創建dbmx或EDMX,

從同一項目中右鍵點擊後 1.選擇添加的newitem 在左上方 2.選擇代碼 3.選擇EF 4.x的DbContextGenerator。

enter image description here 有關這更多信息,你可以按照這個網址 more on autogeneration of models