1、創建項目及下載Entity Framework
創建項目如下:
項目中安裝Entity Framework:
2、數據庫連接、實體類及映射文件配置
數據庫連接配置文件:App.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> <parameters> <parameter value="Data Source=(local); User ID=sa; Password=1; MultipleActiveResultSets=True" /> </parameters> </defaultConnectionFactory> </entityFramework> </configuration>
實體類文件:Province.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Northwind.App.Entities { public class Province { /// <summary> /// 省份ID /// </summary> public Guid ProvinceID { get; set; } /// <summary> /// 省份編號 /// </summary> public string ProvinceNo { get; set; } /// <summary> /// 省份名稱 /// </summary> public string ProvinceName { get; set; } } }
實體類映射文件:ProvinceMap.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity.ModelConfiguration; using System.ComponentModel.DataAnnotations.Schema; using Northwind.App.Entities; namespace Northwind.App.Mapping { public class ProvinceMap : EntityTypeConfiguration<Province> { public ProvinceMap() { // Primary Key this.HasKey(t => t.ProvinceID); // Properties this.Property(t => t.ProvinceNo).HasMaxLength(10); this.Property(t => t.ProvinceName).HasMaxLength(50); // Table & Column Mappings this.ToTable("Province"); this.Property(t => t.ProvinceID).HasColumnName("ProvinceID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); this.Property(t => t.ProvinceNo).HasColumnName("ProvinceNo"); this.Property(t => t.ProvinceName).HasColumnName("ProvinceName"); } } }
數據庫操作上下文:NorthwindContext.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; using Northwind.App.Entities; using Northwind.App.Mapping; namespace Northwind.App { public class NorthwindContext : DbContext { public DbSet<Province> Provinces { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new ProvinceMap()); } } }
3、新增
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Northwind.App.Entities; namespace Northwind.App { class Program { static void Main(string[] args) { Province province = new Province { ProvinceID = Guid.NewGuid(), ProvinceNo = "100000", ProvinceName = "北京" }; using (NorthwindContext db = new NorthwindContext()) { db.Provinces.Add(province); db.SaveChanges(); } } } }
執行的Sql語句:
exec sp_executesql N'insert [dbo].[Province]([ProvinceID], [ProvinceNo], [ProvinceName]) values (@0, @1, @2) ',N'@0 uniqueidentifier,@1 nvarchar(10),@2 nvarchar(50)',@0='F0427980-6CB6-4D5B-91F5-ADE3E676DEA1',@1=N'100000',@2=N'北京'
4、修改
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Northwind.App.Entities; namespace Northwind.App { class Program { static void Main(string[] args) { Province province = new Province { ProvinceID = new Guid("F0427980-6CB6-4D5B-91F5-ADE3E676DEA1"), ProvinceNo = "100000", ProvinceName = "上海" }; using (NorthwindContext db = new NorthwindContext()) { db.Entry(province).State = EntityState.Modified; db.SaveChanges(); } } } }
執行的Sql語句:
exec sp_executesql N'update [dbo].[Province] set [ProvinceNo] = @0, [ProvinceName] = @1 where ([ProvinceID] = @2) ',N'@0 nvarchar(10),@1 nvarchar(50),@2 uniqueidentifier',@0=N'100000',@1=N'上海',@2='F0427980-6CB6-4D5B-91F5-ADE3E676DEA1'
5、刪除
代碼1:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Northwind.App.Entities; namespace Northwind.App { class Program { static void Main(string[] args) { Province province = new Province { ProvinceID = new Guid("F0427980-6CB6-4D5B-91F5-ADE3E676DEA1") }; using (NorthwindContext db = new NorthwindContext()) { db.Provinces.Attach(province); db.Provinces.Remove(province); db.SaveChanges(); } } } }
代碼2:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Northwind.App.Entities; namespace Northwind.App { class Program { static void Main(string[] args) { Province province = new Province { ProvinceID = new Guid("F0427980-6CB6-4D5B-91F5-ADE3E676DEA1") }; using (NorthwindContext db = new NorthwindContext()) { db.Entry(province).State = EntityState.Deleted; db.SaveChanges(); } } } }
執行的Sql語句:
exec sp_executesql N'delete [dbo].[Province] where ([ProvinceID] = @0)',N'@0 uniqueidentifier',@0='F0427980-6CB6-4D5B-91F5-ADE3E676DEA1'
6、查詢
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Northwind.App { class Program { static void Main(string[] args) { using (NorthwindContext db = new NorthwindContext()) { var expr = from p in db.Provinces select p; foreach (var item in expr) { Console.WriteLine("{0}-{1}-{2}", item.ProvinceID, item.ProvinceNo, item.ProvinceName); } } } } }
執行的Sql語句:
SELECT [Extent1].[ProvinceID] AS [ProvinceID], [Extent1].[ProvinceNo] AS [ProvinceNo], [Extent1].[ProvinceName] AS [ProvinceName] FROM [dbo].[Province] AS [Extent1]
以上全部代碼為Entity Framework Code First的基本增刪改查的操作,僅為第一步使用Entity Framework Code First操作Sql Server數據庫。