2013-01-10 97 views
2

(我對Linq to SQL是全新的)我正在創建一個與數據庫非常密切合作的Web應用程序,我正在尋找最快和連接時間有效的模型,並且認爲Linq to SQL是這樣的。我使用的是C#/ .Net4/Visual Studio 2010Linq to SQL DataContext:如何加載數據?

爲簡單起見,我有一個包含大量asp文本框的web .aspx頁面。我想通過Linq將它們的文本值從SQL數據中提供給SQL對象。我還有一個名爲DataClasses.dbml的文件,並在設計視圖中添加了一個表格。我在我的網頁代碼隱藏至今的代碼是:

DataClassesDataContext db = new DataClassesDataContext(getConnectionString); 

var table = from t in db.MyTable 
      where t.PK == 2 
      select new { t.col1, t.col2, t.col3}; 

db.Connection.Open(); 
db. // What's the best way of loading the object? 
db.Connection.Close(); 

我如何再接入列的值?或者我把它綁定到數據表?如果是這樣,怎麼樣?

myTextBox1.Text = table.???col1.value; 
+0

絕對沒有必要過分地使用大寫字母書寫 - 它好像你喊,喊着的通常被認爲是粗魯的。 =) –

回答

0

使用

myTextBox1.Text = table.FirstOrDefault().col1.ToString(); 
+0

請添加一些說明文字,以使其成爲有用的答案。 –

14

你並不需要打開或關閉連接。 LinqToSql爲你抽象。

創建查詢後,您可以執行該查詢並使用SingleOrDefault()將該行作爲對象檢索。

using (var db = new DataClassesDataContext(getConnectionString)) 
{ 
    var myObject = db.MyTable.SingleOrDefault(t => t.PK == 2) 
} 

要訪問的對象,你可以直接訪問列,因爲它們已經映射到相應的屬性:

myTextBox1.Text = myObject.col1; 

using (var db = new DataClassesDataContext(getConnectionString)) 
{ 
    var query = from t in db.MyTable 
       where t.PK == 2 
       select new { t.col1, t.col2, t.col3}; 
    var myObject = query.SingleOrDefault(); 
} 

您也可以通過使用拉姆達符號簡化這個操作

1

通常的方法是調用將執行查詢的方法(ToArray,ToList,First,Single等)或枚舉它在foreach中。

例如:

var query = from t in db.MyTable 
      where t.PK == 2 
      select new { t.col1, t.col2, t.col3}; 

var result = query.ToArray(); // now it contains array of resulting objects 

// or enumerate 
foreach (var obj in query) 
{ 
    // do stuff with obj 
}