Linq To Sql進階系列(三)CUD和Log

作者: Tom Song  來源: 博客園  發布時間: 2008-09-27 11:51  閱讀: 12961 次  推薦: 0   原文鏈接   [收藏]  
 
[1] Linq To Sql進階系列(三)CUD和Log
[2] Linq To Sql進階系列(三)CUD和Log
[3] Linq To Sql進階系列(三)CUD和Log

系列文章導航:

Linq To Sql進階系列(一)從映射講起

Linq To Sql進階系列(二)M:M關系

Linq To Sql進階系列(三)CUD和Log

Linq To Sql進階系列(四)User Define Function篇

Linq To Sql進階系列(五)Store Procedure篇

Linq To Sql進階系列(六)用object的動態查詢與保存log篇

Linq To Sql進階系列(七)動態查詢續及CLR與SQL在某些細節上的差別

 

CUD就是Create, Update, Delete。在別人都寫過了后,還有什么是新鮮的呢?

1,CreateDatabase
            Northwind db = new Northwind("You connection string");  //注意database項,起一個不存在的數據庫名稱
            db.Log = Console.Out;
            if (!db.DatabaseExists())  //如果,數據庫不存在
                db.CreateDatabase();   //創建數據庫
這個的好處,就是你可以用OR designer設計實體類,定義其在數據庫的各個column,然后,將其返回到數據庫。前段時間,和別人爭論起,在程序設計時,是先有實體類還是先有實體表時,其主張,是由高層到底層,即先設計實體類,再做表。那這個恰好滿足了這個需要。但是,在OR designer上設計實體類的數據庫屬性時,及其難用,我寧愿根據實體類,去設計數據庫中的表,然后,在重新生成這些實體類。

2, Inser記錄
2.0
這個操作相當簡單。new出來一個對象,使用Add方法將其加入到其對應Entity集合中后,使用SubmitChanges函數即可。
    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.Add(newCustomer);
    db.SubmitChanges();

2.1
如果,數據表中有數據庫自動賦值的column的呢?就拿Orders表來說事。其OrderID就是自增型的。看看該字段的映射。

[Column(Storage="_OrderID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY",
  IsPrimaryKey
=true, IsDbGenerated=true)]
    
public int OrderID
    
{
        
get
        {
            
return this._OrderID;
        }

        set
        {
            
if ((this._OrderID != value))
            
{
                
this.OnOrderIDChanging(value);
                
this.SendPropertyChanging();
                
this._OrderID = value;
                
this.SendPropertyChanged("OrderID");
                
this.OnOrderIDChanged();
            }

        }

    }

在其Attribute中,有AutoSync=AutoSync.OnInsert. 當有IsDbGenerated為true時,OnInsert為AutoSync默認值。該字段告訴run-time,在插入數據庫后,自動更新數據庫產生的值。 我們隨便來做個測試,看看Linq To Sql做了什么。

            Orders o = new Orders();
            o.ShipAddress 
= "Test";
            db.Orders.Add(o);
            db.SubmitChanges();

            Console.WriteLine(o.OrderID);

 

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()