当前位置:首页 > 开发教程 > 数据库 >

Linq To Sql进阶系列(三)CUD和Log

时间:2013-05-06 17:44 来源: 作者: 收藏

本系列文章导航

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就是自增型的。看看该字段的映射。

Linq To Sql进阶系列(三)CUD和Log[Column(Storage="_OrderID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY",
  IsPrimaryKey
=true, IsDbGenerated=true)]
Linq To Sql进阶系列(三)CUD和Log    
public int OrderID
Linq To Sql进阶系列(三)CUD和Log    
{
Linq To Sql进阶系列(三)CUD和Log        
get
Linq To Sql进阶系列(三)CUD和Log        
{
Linq To Sql进阶系列(三)CUD和Log            
return this._OrderID;
Linq To Sql进阶系列(三)CUD和Log        }

Linq To Sql进阶系列(三)CUD和Log        
set
Linq To Sql进阶系列(三)CUD和Log        
{
Linq To Sql进阶系列(三)CUD和Log            
if ((this._OrderID != value))
Linq To Sql进阶系列(三)CUD和Log            
{
Linq To Sql进阶系列(三)CUD和Log                
this.OnOrderIDChanging(value);
Linq To Sql进阶系列(三)CUD和Log                
this.SendPropertyChanging();
Linq To Sql进阶系列(三)CUD和Log                
this._OrderID = value;
Linq To Sql进阶系列(三)CUD和Log                
this.SendPropertyChanged("OrderID");
Linq To Sql进阶系列(三)CUD和Log                
this.OnOrderIDChanged();
Linq To Sql进阶系列(三)CUD和Log            }

Linq To Sql进阶系列(三)CUD和Log        }

Linq To Sql进阶系列(三)CUD和Log    }

在其Attribute中,有AutoSync=AutoSync.OnInsert. 当有IsDbGenerated为true时,OnInsert为AutoSync默认值。该字段告诉run-time,在插入数据库后,自动更新数据库产生的值。 我们随便来做个测试,看看Linq To Sql做了什么。

Linq To Sql进阶系列(三)CUD和Log            Orders o = new Orders();
Linq To Sql进阶系列(三)CUD和Log            o.ShipAddress 
= "Test";
Linq To Sql进阶系列(三)CUD和Log            db.Orders.Add(o);
Linq To Sql进阶系列(三)CUD和Log            db.SubmitChanges();
Linq To Sql进阶系列(三)CUD和Log
Linq To Sql进阶系列(三)CUD和Log            Console.WriteLine(o.OrderID);

 

继续>>下一页 [第1页][第2页][第3页] 0 0   标签: Linq To Sql进阶CUDLog   

数据库阅读排行

最新文章