Linq使用InsertOnSubmit方法剖析
在向大家詳細(xì)介紹Linq使用InsertOnSubmit方法之前,首先讓大家了解下調(diào)用SubmitChanges,然后全面介紹Linq使用InsertOnSubmit方法。
1.簡單形式
說明:new一個對象,Linq使用InsertOnSubmit方法將其加入到對應(yīng)的集合中,使用SubmitChanges()提交到數(shù)據(jù)庫。
- NorthwindDataContext db = new NorthwindDataContext();
 - var newnewCustomer = new Customer
 - {
 - CustomerID = "MCSFT",
 - CompanyName = "Microsoft",
 - ContactName = "John Doe",
 - ContactTitle = "Sales Manager",
 - Address = "1 Microsoft Way",
 - City = "Redmond",
 - Region = "WA",
 - PostalCode = "98052",
 - Country = "USA",
 - Phone = "(425) 555-1234",
 - Fax = null
 - };
 - db.Customers.InsertOnSubmit(newCustomer);
 - db.SubmitChanges();
 
語句描述:Linq使用InsertOnSubmit方法將新客戶添加到Customers 表對象。調(diào)用SubmitChanges 將此新Customer保存到數(shù)據(jù)庫。
2.一對多關(guān)系
說明:Category與Product是一對多的關(guān)系,提交Category(一端)的數(shù)據(jù)時,LINQ to SQL會自動將Product(多端)的數(shù)據(jù)一起提交。
- var newnewCategory = new Category
 - {
 - CategoryName = "Widgets",
 - Description = "Widgets are the ……"
 - };
 - var newnewProduct = new Product
 - {
 - ProductName = "Blue Widget",
 - UnitPrice = 34.56M,
 - Category = newCategory
 - };
 - db.Categories.InsertOnSubmit(newCategory);
 - db.SubmitChanges();
 
語句描述:Linq使用InsertOnSubmit方法將新類別添加到Categories表中,并將新Product對象添加到與此新Category有外鍵關(guān)系的Products表中。調(diào)用SubmitChanges將這些新對象及其關(guān)系保存到數(shù)據(jù)庫。
3.多對多關(guān)系
說明:在多對多關(guān)系中,我們需要依次提交。
- var newnewEmployee = new Employee
 - {
 - FirstName = "Kira",
 - LastName = "Smith"
 - };
 - var newnewTerritory = new Territory
 - {
 - TerritoryID = "12345",
 - TerritoryDescription = "Anytown",
 - Region = db.Regions.First()
 - };
 - var newnewEmployeeTerritory = new EmployeeTerritory
 - {
 - Employee = newEmployee,
 - Territory = newTerritory
 - };
 - db.Employees.InsertOnSubmit(newEmployee);
 - db.Territories.InsertOnSubmit(newTerritory);
 - db.EmployeeTerritories.InsertOnSubmit(newEmployeeTerritory);
 - db.SubmitChanges();
 
語句描述:Linq使用InsertOnSubmit方法將新雇員添加到Employees 表中,將新Territory添加到Territories表中,并將新EmployeeTerritory對象添加到與此新Employee對象和新 Territory對象有外鍵關(guān)系的EmployeeTerritories表中。調(diào)用SubmitChanges將這些新對象及其關(guān)系保持到數(shù)據(jù)庫。
4.使用動態(tài)CUD重寫(Override using Dynamic CUD)
說明:CUD就是Create、Update、Delete的縮寫。下面的例子就是新建一個ID(主鍵)為32的Region,不考慮數(shù)據(jù)庫中有沒有ID為32的數(shù)據(jù),如果有則替換原來的數(shù)據(jù),沒有則插入。
- Region nwRegion = new Region()
 - {
 - RegionID = 32,
 - RegionDescription = "Rainy"
 - };
 - db.Regions.InsertOnSubmit(nwRegion);
 - db.SubmitChanges();
 
語句描述:使用DataContext提供的分部方法InsertRegion插入一個區(qū)域。對SubmitChanges 的調(diào)用調(diào)用InsertRegion 重寫,后者使用動態(tài)CUD運(yùn)行Linq To SQL生成的默認(rèn)SQL查詢。
【編輯推薦】















 
 
 
 
 
 
 