linq小记
添加到 Table 的對象不在標識緩存中。標識緩存僅反映從數據庫中檢索到的內容。調用 InsertOnSubmit 后,直到 SubmitChanges 成功完成,所添加的實體才會出現在對數據庫的查詢中。
運行庫中的對象具有唯一標識。引用同一對象的兩個變量實際上是引用此對象的同一實例。因為這一事實,您通過一個變量做出更改后,立即就可以通過另一個變量看到這些更改。
對于對象,您的期望則大不一樣。您期望在您反復向 DataContext 索取相同的信息時,它實際上會為您提供同一對象實例
在此示例中,如果您執行同一查詢兩次,則您每次都會收到對內存中同一對象的引用。
Customer cust1 =
??? (from cust in db.Customers
???? where cust.CustomerID == "BONAP"
???? select cust).First();
Customer cust2 =
??? (from cust in db.Customers
???? where cust.CustomerID == "BONAP"
???? select cust).First();
避免在插入或更新時顯式設置數據庫生成的值
問:我的一個數據庫表具有一個默認為 SQL Getdate() 的 DateCreated 列。在我試圖使用 LINQ to SQL 插入新記錄時,該值會設置為 NULL。我希望其設置為數據庫默認值。
答:LINQ to SQL 會自動為標識(自動增加)和 rowguidcol(數據庫生成的 GUID)以及時間戳列處理這種情況。在其他情況下,您應手動設置 IsDbGenerated=true 和 AutoSync=Always/OnInsert/OnUpdate 屬性。
?
?
同樣,使用經 LINQ to SQL 轉換后的 Average 計算整數值時,所得結果的數據類型為 integer,而非 double。
并且使用 Sum 計算空序列或只包含 null 的序列時,所得結果為 null 而非零。
LINQ to SQL 允許在 GroupBy 和 OrderBy 方法中使用實體類型。在這些運算符的轉換過程中,使用一種類型的參數被視為等效于指定該類型的所有成員。例如,下面的代碼是等效的:db.Customers.GroupBy(c => c);
db.Customers.GroupBy(c => new { c.CustomerID, c.ContactName });
具體而言,您不能對包含映射到 text 或 ntext 列的成員的任何結果使用 Distinct()。
?
轉載于:https://www.cnblogs.com/z2002m/archive/2008/08/12/1266221.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: Soalris10下NDOUtils安装
- 下一篇: Search Engine XSS Wo