ALinq 使用教程(七)ALinq 的擴充套件
阿新 • • 發佈:2018-12-27
ALinq 在 Linq to SQL 的基本,做了一些擴充套件,使得它更為好用。
獲取實體類的 DataContext 物件
選擇Category 實體類,將 DataContext 設為 True 。
執行下面的程式碼:
staticvoid Main(string[] args){
var dc =new NorthwindDataContext() { Log = Console.Out };
var category = dc.Categories.First();
Console.WriteLine(category.DataContext);
}
執行結果:
很明顯,可以看到 category.DataContext 物件不為空,但是我們並沒有在程式碼中給 category.DataContext 賦值,它怎麼會不為空呢?我來看一下程式碼生成器生成的程式碼。
{
this.DataContext = ((NorthwindDataContext)(dataContext));
}
public NorthwindDataContext DataContext
{
get
{
returnthis._DataContext;
}
privateset
{
this._DataContext = value;
}
}
我們主意到 SetDataContext 這個方法,當一個實體被 DataContext 建立後,DataContext 便會通反射檢索名稱 SetDataContext 的方法,如果存在,則呼叫該方法。所以,儘管我閃並沒有對 category.DataContext 賦值,但 DataContext 卻通過呼叫 SetDataContext 對它進行了賦值。
批量更新、刪除
程式碼 staticvoid Main(string[] args){
var dc =new NorthwindDataContext() { Log = Console.Out };
dc.Categories.Update(o
dc.Categories.Delete(o => o.Categoryid ==-1);
}
執行結果:
使用 Linq 表示式插入資料
程式碼 staticvoid Main(string[] args){
var dc =new NorthwindDataContext() { Log = Console.Out };
var categoryID = dc.Categories.Max(c => c.Categoryid) +1;
dc.Categories.Insert(o =>new Category
{
Categoryid = categoryID,
Categoryname ="Category Name",
Description ="Description"
});
}
執行結果: