【IT168技术文档】
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函数即可。
2.1var 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();
如果,数据表中有数据库自动赋值的column的呢?就拿Orders表来说事。其OrderID就是自增型的。看看该字段的映射。
在其Attribute中,有AutoSync=AutoSync.OnInsert. 当有IsDbGenerated为true时,OnInsert为AutoSync默认值。该字段告诉run-time,在插入数据库后,自动更新数据库产生的值。 我们随便来做个测试,看看Linq To Sql做了什么。[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(); } } }
你可以扑获如下的sqlOrders o = new Orders(); o.ShipAddress = "Test"; db.Orders.Add(o); db.SubmitChanges(); Console.WriteLine(o.OrderID);
INSERT INTO [dbo].[Orders]([CustomerID], [EmployeeID], [OrderDate], [RequiredDate], [ShippedDate], [ShipVia], [Freight], [ShipName], [ShipAddress], [ShipCity], [ShipRegion], [ShipPostalCode], [ShipCountry]) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12) SELECT [t0].[OrderID] FROM [dbo].[Orders] AS [t0] WHERE [t0].[OrderID] = (SCOPE_IDENTITY()) -- @p0: Input StringFixedLength (Size = 5; Prec = 0; Scale = 0) [] -- @p1: Input Int32 (Size = 0; Prec = 0; Scale = 0) [] -- @p2: Input DateTime (Size = 0; Prec = 0; Scale = 0) [] -- @p3: Input DateTime (Size = 0; Prec = 0; Scale = 0) [] -- @p4: Input DateTime (Size = 0; Prec = 0; Scale = 0) [] -- @p5: Input Int32 (Size = 0; Prec = 0; Scale = 0) [] -- @p6: Input Currency (Size = 0; Prec = 19; Scale = 4) [] -- @p7: Input String (Size = 0; Prec = 0; Scale = 0) [] -- @p8: Input String (Size = 4; Prec = 0; Scale = 0) [Test] -- @p9: Input String (Size = 0; Prec = 0; Scale = 0) [] -- @p10: Input String (Size = 0; Prec = 0; Scale = 0) [] -- @p11: Input String (Size = 0; Prec = 0; Scale = 0) [] -- @p12: Input String (Size = 0; Prec = 0; Scale = 0) [] -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1