国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LINQ to SQL 建立實體類

2019-11-17 02:46:35
字體:
來源:轉載
供稿:網友

LINQ to SQL 建立實體類

使用LINQ to SQL時,需要首先建立用于映射數據庫對象的模型,也就是實體類。在運行時,LINQ to SQL 根據LINQ表達式或查詢運算符生成SQL語句,發送到數據庫進行操作。數據庫返回后,LINQ to SQL負責將結果轉換成實體類對象。

建立實體類的方法有很多,例如LINQ to SQL設計器,手動編碼建立,使用xml文件映射,使用命令行工具SqlMetal生成等。其中最方便的就是LINQ to SQL設計器。

1.使用LINQ to SQL設計器建立實體類

在一個示例用的Demo控制臺程序中添加一個“基于服務的數據庫”Database1.mdf,建立一張tb_GuestInfo的表。該表的詳細如下:

下面的所有建立方式,都用的這個數據庫。

在項目中添加一個LINQ to SQL類,采用默認的名稱DataClasses1.dbml,如下:

將tb_GuestInfo表拖到界面上,保存。

OK,編寫相關代碼如下,實現增刪改查:

復制代碼
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace LINQ_To_SQL自定義數據庫和實體類{    /// <summary>    /// 實體類的建立___1.VS建立實體類    /// </summary>    class PRogram    {        static void Main(string[] args)        {            //            DataClasses1DataContext dc = new DataClasses1DataContext();                        //1.查詢            IQueryable<tb_GuestInfo> query = from p in dc.tb_GuestInfo                                             where p.Name != "XXX"                                             select p;            foreach (var g in query)            {                Console.WriteLine("{0} {1} {2} {3}",g.Id,g.Name,g.Age ,g.Tel );            }            Console.WriteLine("-----------------");            Console.ReadKey(false);            //2.增加一條記錄            tb_GuestInfo gInfo = new tb_GuestInfo() { Id = 9, Name = "M&M", Age = 40, Tel = "135****5555" };            dc.tb_GuestInfo.InsertOnSubmit(gInfo);            dc.SubmitChanges();            foreach (var g in query)            {                Console.WriteLine("{0} {1} {2} {3}",g.Id , g.Name, g.Age, g.Tel);            }            Console.WriteLine("-----------------");            Console.ReadKey(false);            //3.刪除            var query_itemToDelete = from g in dc.tb_GuestInfo                                     where g.Name == "M&M"                                     select g;            foreach (var g in query_itemToDelete)            {                dc.tb_GuestInfo.DeleteOnSubmit(g);            }            dc.SubmitChanges();            foreach (var g in query)            {                Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);            }            Console.WriteLine("-----------------");            Console.ReadKey(false);            //4.修改            var query_itemToUpdate = from g in dc.tb_GuestInfo                                     where g.Name.Contains("DebugLZQ")                                     select g;            foreach (var g in query_itemToUpdate)            {                g.Name = g.Name + "A";            }            dc.SubmitChanges();            foreach (var g in query)            {                Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);            }            Console.WriteLine("-----------------");            Console.ReadKey(false);        }    }}
復制代碼

程序運行結果如下:

2.手動建立實體類

實體類在多數情況下可以通過LINQ to SQL類設計器建立,當然動手建立一個簡單的實體類也不是難事,并且可以更好的學習LINQ to SQL的對象模型。數據庫依然是前面的示例數據庫。

在項目中添加一個類GuestInfoEntity.cs,如下:

復制代碼
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Linq.Mapping;namespace DataContexDemo{    /// <summary>    /// 手動建立實體類    /// </summary>    [Table(Name="tb_GuestInfo")]    class GuestInfoEntity    {        [Column(IsPrimaryKey=true,DbType="Int NOT NULL IDENTITY",IsDbGenerated=true,Name="Id")]        public int ID { get; set; }        [Column(DbType = "nvarchar(20)", Name = "Name")]        public string Name{get;set;}        [Column(DbType = "int", Name = "Age")]        public int Age { get; set; }        [Column(DbType = "nvarchar(20)", Name = "Tel")]        public string Tel { get; set; }    }}
復制代碼

編寫示例代碼,注意需要引入System.Data.Linq.dll:

復制代碼
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Linq;//關注namespace DataContexDemo{    class Program    {        static void Main(string[] args)        {            //2.手動建立實體類            //            //連接字符串            string constring = @"Data Source=./SQLEXPRESS;AttachDbFilename=E:/Visual Studio 2010/LINQ_to_SQL/LINQ_To_SQL自定義數據庫和實體類/Database1.mdf;Integrated Security=True;User Instance=True";            DataContext dc = new DataContext(constring);            Table<GuestInfoEntity> tb = dc.GetTable<GuestInfoEntity>();            var query = tb.AsEnumerable();            foreach (var q in query)            {                Console.WriteLine("{0} {1} {2} {3}",q.ID,q.Name,q.Age,q.Tel );            }            Console.ReadKey();        }    }}
復制代碼

程序運行如下:

3.使用XML映射文件建立實體類

實體類的映射除了使用內聯Attribute外,還可以建立一個包含映射信息的XML文件,此文件生成System.Data.Linq.Mapping.XmlMappingSource對象,作為DataContext對象構造方法的參數。

這個XML文件只有一個根節點---Database元素,用來映射的數據庫信息。Database元素包含一個或多個Table元素,用于映射數 據庫表的信息,Table元素由一個Type元素和多個Column元素(或Association元素)組成。Type元素用來指定實體 類,Column元素用來指定列信息,Association元素用來映射數據庫關系。

在項目中添加一個XML文件,采用默認名稱XMLFile1.xml,內容如下:

復制代碼
<?xml version="1.0" encoding="utf-8" ?><Database Name="Database1" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007"><!--數據庫名稱可隨意;名稱空間一定要加上-->  <Table Name="tb_GuestInfo"><!--數據庫中表的名稱-->    <Type Name="LINQtoSQL建立實體類_XML.GuestInfoEntity"><!--太BT了,居然要全名;GuestInfoEntity居然不行-->          <Column Name="Id" Member="ID" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true"/>      <Column Name="Name" Member="Name" DbType="nvarchar(20)" />      <Column Name="Age" Member="Age" DbType="int" />      <Column Name="Tel" Member="Tel" DbType="nvarchar(20)" />    </Type>  </Table></Database>
復制代碼

這個XML文件包含類全部的映射信息,下面建立映射的類GuestInfoEntity.cs:

復制代碼
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace LINQtoSQL建立實體類_XML{   public  class GuestInfoEntity    {               public int ID { get; set; }                public string Name { get; set; }               public int Age { get; set; }                public string Tel { get; set; }    }}
復制代碼

編寫示例代碼,同樣需要引入System.Data.Linq.dll:

復制代碼
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Linq;using System.Data.Linq.Mapping;using System.IO;//namespace LINQtoSQL建立實體類_XML{    class Program    {        static void Main(string[] args)        {            string constring = @"Data Source=./SQLEXPRESS;AttachDbFilename=E:/Visual Studio 2010/LINQ_to_SQL/LINQ_To_SQL自定義數據庫和實體類/Database1.mdf;Integrated Security=True;User Instance=True";            XmlMappingSource map = XmlMappingSource.FromXml(File.ReadAllText("XMLFile1.xml"));            DataContext dc = new DataContext(constring, map);            Table<GuestInfoEntity> tb = dc.GetTable<GuestInfoEntity>();            var query = tb.AsEnumerable();            foreach (var g in query)            {                Console.WriteLine("{0} {1} {2} {3}",g.ID,g.Name,g.Age,g.Tel );
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平度市| 耒阳市| 包头市| 平舆县| 仁怀市| 杭州市| 黄山市| 晋城| 四平市| 社会| 江阴市| 咸宁市| 奇台县| 阿城市| 宜春市| 石林| 余干县| 武汉市| 濮阳市| 文安县| 临武县| 沙洋县| 庆元县| 德昌县| 西乌珠穆沁旗| 大理市| 福鼎市| 绥德县| 郧西县| 邛崃市| 松桃| 南宫市| 金乡县| 浑源县| 渝中区| 大姚县| 怀安县| 宿州市| 普格县| 紫阳县| 灵石县|