1、根據自己的理解,Code First :通過實體類和相關配置生成對應的資料庫,實現實體和資料庫的映射關係,或通過實體類和相關配置與已經生成的實體與已經存在的資料庫搭建映射關係 例: 實體類:StudentInfo、ClassInfo 1 public class ClassInfo 2 { 3 ...
1、根據自己的理解,Code First :通過實體類和相關配置生成對應的資料庫,實現實體和資料庫的映射關係,或通過實體類和相關配置與已經生成的實體與已經存在的資料庫搭建映射關係
例:
實體類:StudentInfo、ClassInfo
1 public class ClassInfo 2 { 3 public int ID { get; set; } 4 public string Name { get; set; } 5 //每班都有很多學生 6 public ICollection<StudentInfo> Students { get; set; } 7 } 8 public class StudentInfo 9 { 10 public int ID { get; set; } 11 public string Name { get; set; } 12 public char Gender { get; set; } 13 public DateTime Birth { get; set; } 14 //每個學生都有自己所屬的一個班級 15 public ClassInfo ClassInfo { get; set; } 16 }View Code
上下文:CSContext
1 public class CSContext:DbContext 2 { 3 public CSContext():base("name=ConnStr") 4 { 5 } 6 //學生和班級的集合 7 public DbSet<StudentInfo> StudentInfos { get; set; } 8 public DbSet<ClassInfo> ClassInfos { get; set; } 9 } 10View Code
配置文件:App.Config
1 ... 2 <connectionStrings> 3 <add name="ConnStr" connectionString="Server=localhost;DataBase=EFDemo;User ID=sa;password=***" providerName="System.Data.SqlClient"/> 4 </connectionStrings> 5 ...
控制台:
1 static void Main(string[] args) 2 { 3 //ID自動映射為資料庫的主鍵 4 ClassInfo classinfo = new Entities.ClassInfo() { 5 Name="一班" 6 }; 7 StudentInfo studentinfo = new Entities.StudentInfo() { 8 Name = "王亮", 9 Gender = '男', 10 Birth = Convert.ToDateTime("1980-01-01") 11 }; 12 var context = new CSContext(); 13 //context.Entry<StudentInfo>(studentinfo).State = System.Data.Entity.EntityState.Added; 14 //context.Set<StudentInfo>().Add(studentinfo); 15 //context.StudentInfos.Add(studentinfo); 16 context.Entry<ClassInfo>(classinfo).State = System.Data.Entity.EntityState.Added; 17 context.SaveChanges(); 18 Console.WriteLine("OK"); 19 Console.ReadKey(); 20 }View Code
資料庫:自動創建對應database 、table及插入數據(自動產生對應的主外鍵)
1 ... 2 exec sp_executesql N'INSERT [dbo].[ClassInfoes]([Name]) 3 VALUES (@0) 4 SELECT [ID] 5 FROM [dbo].[ClassInfoes] 6 WHERE @@ROWCOUNT > 0 AND [ID] = scope_identity()',N'@0 nvarchar(max) ',@0=N'一班' 7 ...