close

插入(Insert)

1.簡單形式

說明:new一個物件,使用InsertOnSubmit方法將其加入到對應的集合中,使用SubmitChanges()提交到資料庫。

NorthwindDataContext db = new NorthwindDataContext();
var newCustomer = 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();

語句描述:使用InsertOnSubmit方法將新客戶添加到Customers 表物件。調用SubmitChanges 將此新Customer保存到資料庫。

2.一對多關聯性

說明:Category與Product是一對多的關係,提交Category(一端)的資料時,LINQ to SQL會自動將Product(多端)的資料一起提交。

var newCategory = new Category
                  {
                      CategoryName = "Widgets",
                      Description = "Widgets are the ……"
                  };
var newProduct = new Product
                 {
                     ProductName = "Blue Widget",
                     UnitPrice = 34.56M,
                     Category = newCategory
                 };
db.Categories.InsertOnSubmit(newCategory);
db.SubmitChanges();

語句描述:使用InsertOnSubmit方法將新類別添加到Categories表中,並將新Product物件添加到與此新Category有外鍵關係的Products表中。調用SubmitChanges將這些新物件及其關係保存到資料庫。

3.多對多關係

說明:在多對多關係中,我們需要依次提交。

var newEmployee = new Employee
                  {
                      FirstName = "Kira",
                      LastName = "Smith"
                  };
var newTerritory = new Territory
                   {
                       TerritoryID = "12345",
                       TerritoryDescription = "Anytown",
                       Region = db.Regions.First()
                   };
var newEmployeeTerritory = new EmployeeTerritory
                           {
                             Employee = newEmployee,
                             Territory = newTerritory
                           };
db.Employees.InsertOnSubmit(newEmployee);
db.Territories.InsertOnSubmit(newTerritory);
db.EmployeeTerritories.InsertOnSubmit(newEmployeeTerritory);
db.SubmitChanges();

語句描述:使用InsertOnSubmit方法將新雇員添加到Employees 表中,將新Territory添加到Territories表中,並將新EmployeeTerritory對象添加到與此新Employee物件和新Territory物件有外鍵關係的EmployeeTerritories表中。調用SubmitChanges將這些新物件及其關係保持到資料庫。

4.使用動態CUD重寫(Override using Dynamic CUD)

說明:CUD就是Create、Update、Delete的縮寫。下面的例子就是新建一個ID(主鍵)為32的Region,不考慮資料庫中有沒有ID為32的資料,如果有則替換原來的資料,沒有則插入。

Region nwRegion = new Region()
                  {
                      RegionID = 32,
                      RegionDescription = "Rainy"
                  };
db.Regions.InsertOnSubmit(nwRegion);
db.SubmitChanges();

語句描述:使用DataContext提供的分部方法InsertRegion插入一個區域。對SubmitChanges 的調用調用InsertRegion 重寫,後者使用動態CUD運行Linq To SQL生成的默認SQL查詢。

arrow
arrow
    文章標籤
    LINQ LINQ to SQL
    全站熱搜

    Jimmy 發表在 痞客邦 留言(0) 人氣()