Linq使用InsertOnSubmit方法剖析
在向大家詳細(xì)介紹Linq使用InsertOnSubmit方法之前,首先讓大家了解下調(diào)用SubmitChanges,然后全面介紹Linq使用InsertOnSubmit方法。
1.簡(jiǎn)單形式
說明:new一個(gè)對(duì)象,Linq使用InsertOnSubmit方法將其加入到對(duì)應(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 表對(duì)象。調(diào)用SubmitChanges 將此新Customer保存到數(shù)據(jù)庫。
2.一對(duì)多關(guān)系
說明:Category與Product是一對(duì)多的關(guān)系,提交Category(一端)的數(shù)據(jù)時(shí),LINQ to SQL會(huì)自動(dòng)將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對(duì)象添加到與此新Category有外鍵關(guān)系的Products表中。調(diào)用SubmitChanges將這些新對(duì)象及其關(guān)系保存到數(shù)據(jù)庫。
3.多對(duì)多關(guān)系
說明:在多對(duì)多關(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對(duì)象添加到與此新Employee對(duì)象和新 Territory對(duì)象有外鍵關(guān)系的EmployeeTerritories表中。調(diào)用SubmitChanges將這些新對(duì)象及其關(guān)系保持到數(shù)據(jù)庫。
4.使用動(dòng)態(tài)CUD重寫(Override using Dynamic CUD)
說明:CUD就是Create、Update、Delete的縮寫。下面的例子就是新建一個(gè)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插入一個(gè)區(qū)域。對(duì)SubmitChanges 的調(diào)用調(diào)用InsertRegion 重寫,后者使用動(dòng)態(tài)CUD運(yùn)行Linq To SQL生成的默認(rèn)SQL查詢。
【編輯推薦】