EntityFramework 学习 一 Add New Entity using DBContext in Disconnected Scenario
using System; using System.Collections.Generic; public partial class Student { public Student() { this.Courses = new HashSet<Course>(); } public int StudentID { get; set; } public string StudentName { get; set; } public Nullable<int> StandardId { get; set; } public byte[] RowVersion { get; set; } public virtual Standard Standard { get; set; } public virtual StudentAddress StudentAddress { get; set; } public virtual ICollection<Course> Courses { get; set; } }
using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.Entity.Core.Objects; using System.Linq; public partial class SchoolDBEntities : DbContext { public SchoolDBEntities() : base("name=SchoolDBEntities") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { } public virtual DbSet<Course> Courses { get; set; } public virtual DbSet<Standard> Standards { get; set; } public virtual DbSet<Student> Students { get; set; } public virtual DbSet<StudentAddress> StudentAddresses { get; set; } public virtual DbSet<Teacher> Teachers { get; set; } }
class Program { static void Main(string[] args) { // create new Student entity object in disconnected scenario (out of the scope of DbContext) var newStudent = new Student(); //set student name newStudent.StudentName = "Bill"; //create DBContext object using (var dbCtx = new SchoolDBEntities()) { //Add Student object into Students DBset dbCtx.Students.Add(newStudent); // call SaveChanges method to save student into database dbCtx.SaveChanges(); } } }
首先创建新的Student对象并设置StudentName为bill
其次创建新的Context上下文,并把新实体添加到Students的EntitySet中
最后调用SaveChanges方法,将在数据库中执行如下操作
exec sp_executesql N'INSERT [dbo].[Student]([StudentName], [StandardId]) VALUES (@0, NULL) SELECT [StudentID], [RowVersion] FROM [dbo].[Student] WHERE @@ROWCOUNT > 0 AND [StudentID] = scope_identity(),@0='Bill'
上面也可以用如下方法添加实体
class Program { static void Main(string[] args) { // create new Student entity object in disconnected scenario (out of the scope of DbContext) var newStudent = new Student(); //set student name newStudent.StudentName = "Bill"; //create DBContext object using (var dbCtx = new SchoolDBEntities()) { //Add newStudent entity into DbEntityEntry and mark EntityState to Added dbCtx.Entry(newStudent).State = System.Data.Entity.EntityState.Added; // call SaveChanges method to save new Student into database dbCtx.SaveChanges(); } } }