Entity Framework 的小實(shí)例:在項(xiàng)目中添加一個(gè)實(shí)體類,并做插入操作
在龍游等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),龍游網(wǎng)站建設(shè)費(fèi)用合理。
1>. 創(chuàng)建一個(gè)控制臺(tái)程序
2>. 添加一個(gè) ADO.NET實(shí)體數(shù)據(jù)模型,選擇對(duì)應(yīng)的數(shù)據(jù)庫與表(StudentModel.edmx)
3>. 控件臺(tái)代碼
static void Main(string[] args) { // 創(chuàng)建一個(gè)網(wǎng)關(guān)接口,TestData是數(shù)據(jù)庫名 TestDataEntities td = new TestDataEntities(); // 創(chuàng)建一個(gè)實(shí)體對(duì)象,Student是表映射過來的對(duì)象,將其賦值 Student st1 = new Student(); st1.StudentID = "s4"; st1.StudentName = "test1"; st1.Age = 20; // 將實(shí)體對(duì)象添加到網(wǎng)關(guān)接口,插入操作 td.Student.AddObject(st1); // 網(wǎng)關(guān)保存并改變 td.SaveChanges(); Console.WriteLine("添加成功!"); }
如上 StudentModel.edmx 是生成的實(shí)體模型就是 映射表,里面包含對(duì)象于表的定義
Entity Framework 增刪改查 操作
1>. 基本同上
2>. 控件臺(tái)代碼
class Program { // 創(chuàng)建一個(gè)網(wǎng)關(guān)接口,TestData是數(shù)據(jù)庫名,靜態(tài)方法只能調(diào)用靜態(tài)類 static TestDataEntities stuEntities = new TestDataEntities(); static void Main(string[] args) { // 創(chuàng)建一個(gè)實(shí)體對(duì)象,Student是表映射過來的對(duì)象,將其賦值 Student st1 = new Student(); st1.StudentID = "s4"; st1.StudentName = "小明"; st1.Age = 20; //InsertStu(st1); //DeleteStu("s4"); //Student stu2 = FindStudentByID("s4"); //stu2.StudentName = "小明"; //UpdateStu(stu2); //Console.WriteLine(stu2.StudentName); } // 添加操作 public static void InsertStu(Student stu) { // 將實(shí)體對(duì)象添加到網(wǎng)關(guān)接口,插入操作 stuEntities.Student.AddObject(stu); // 網(wǎng)關(guān)保存并改變 stuEntities.SaveChanges(); Console.WriteLine("添加成功!ID:"+stu.StudentID); } // 刪除操作 public static void DeleteStu(string ID) { Student stu = FindStudentByID(ID); stuEntities.Student.DeleteObject(stu); stuEntities.SaveChanges(); Console.WriteLine("刪除成功!ID:" + stu.StudentID); } // 更新操作 public static void UpdateStu(Student stu) { // 其中 var 為 IQueryable類型,繼承IEnumerable // 繼承IEnumerable的類都能實(shí)現(xiàn) foreach var student = from s in stuEntities.Student where s.StudentID == stu.StudentID select s; // 得到student集合里面的單一實(shí)體 var oldStu = student.SingleOrDefault(); // 修改對(duì)應(yīng)的屬性值 oldStu.StudentName = stu.StudentName; oldStu.Age = stu.Age; // 保存修改 stuEntities.SaveChanges(); Console.WriteLine("更新成功!ID:" + stu.StudentID); } // 更新數(shù)據(jù) 新方法 public bool UpdateEntity(MvcHotel.Model.Customer entity) { bool result = false; // 添加對(duì)象到上下文 he.Attach(entity); // 改變新加入對(duì)象的狀態(tài),設(shè)置為 已修改 he.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified); if (he.SaveChanges() > 0) { result = true; } return result; } // 查詢操作 public static Student FindStudentByID(string ID) { // 方式1: Linq to EF // 根據(jù)ID查詢Student,并得到集合中的單一實(shí)體 var stu = (from s in stuEntities.Student where s.StudentID == ID select s).SingleOrDefault(); // 方式2: Entity SQL string sql = "select Value c from TestDataEntities.Student as c "; ObjectQuery query = stuEntities.CreateQuery (sql); ObjectResult results = query.Execute(MergeOption.NoTracking); //return stu; return query.SingleOrDefault(); } }
EF中操作數(shù)據(jù)庫的網(wǎng)關(guān)
ObjectContext封裝 .NET Framework 和數(shù)據(jù)庫之間的連接。此類用作“創(chuàng)建”、“讀取”、“更新”和“刪除”操作的網(wǎng)關(guān)
ObjectContext 類為主類,用于與作為對(duì)象(這些對(duì)象為 EDM 中定義的實(shí)體類型的實(shí)例)的數(shù)據(jù)進(jìn)行交互
ObjectContext 類的實(shí)例封裝以下內(nèi)容:
a> 到數(shù)據(jù)庫的連接,以 EntityConnection 對(duì)象的形式封裝。
b> 描述該模型的元數(shù)據(jù),以 MetadataWorkspace 對(duì)象的形式封裝
c> 用于管理緩存中持久保存的對(duì)象的 ObjectStateManager 對(duì)象