EF框架(Entity Framework)是框架庫微軟提供的一種OR(/ω\)M(Object Relati??onal Mapping,對象關(guān)系映射)工具,管理它可以幫助我們更方便、數據高效地管理數據庫,簡(jiǎn)潔在本文中,體驗我們將介紹如何使用EF框架來(lái)管理Oracle數據庫,框架庫并(?_?;)給出一個(gè)簡(jiǎn)潔的管理體驗。
(圖片來(lái)源網(wǎng)絡(luò ),數據侵刪)我們需要安裝以下軟件和庫:
Visual Studio:用于開(kāi)發(fā)和管理項目。
Entity Framewoヽ(′ー`)ノrk:用于實(shí)現ORM功能??蚣軒?/p>
Oracle Data Access Components:用于連接??和操作Oracle數據庫。管理
2、數據創(chuàng )建一個(gè)新的簡(jiǎn)潔ASP.NET Web應用程序項目
打??開(kāi)Visual Studio,選擇“新建項目”,體驗然后選擇“ASP.NET Web應用程序”模板,為項目指定一個(gè)名稱(chēng)和位置,然后點(diǎn)擊“確定”。??
在解決方案資源管理器中,右鍵單擊項目名稱(chēng),然后選擇“添加引用”,在(′▽?zhuān)?彈出的對話(huà)框中,選擇“程序集”>“擴展”,然后在列表中找到并選中“Oracle.DataAccess”,點(diǎn)擊“確定”。
4、配置Web.config文件
在Web.config文件中,添加以下內容以配置Oracle數據庫連接(jie)字符串:
&??lt;connectionStrin??gs> <add name="OracleDBContext&q(╬?益?)uot; conne??ction(???)Strin???g=&qu(′;д;`)ot;User Id=用戶(hù)名;Password=密碼;Data Source??=數據庫地址;" providerName="Oracle.DataAccess.ヽ(′ー`)ノClient" /&?gt;</connectionStrings>
將其中的用戶(hù)(╯°□°)╯︵ ┻━┻名、密碼和數據庫地址替換ヾ(′▽?zhuān)??為實(shí)際的值。
5、創(chuàng )建一個(gè)實(shí)體類(lèi)
在項目中,創(chuàng )建一個(gè)名為Student??的實(shí)體類(lèi),用于表示學(xué)生信息,這個(gè)類(lèi)應該繼承自DbContext類(lèi),并使用DbSet屬性定義要操作的數(′ω`*)據庫表。
using System.Data.Ent( ?ヮ?)ity;using System.Data.Entity.Mo(╬?益?)delConfiguration.Conventions;using System.Linq;using System.Collections.Generic;using System;using System.ComponentModel.Dat??aAnnotations;using System.ComponentModel.DataAnnotations.Schema;[Table("STUDENT"(′?_?`);)]public class Student : DbContext{ public Stud??en( ?° ?? ?°)t??((′ω`)) : base("OracleDBContext") { } public DbSet<Stude??ntInfo> StudentInfoes { get; set; }}6、創(chuàng )建一個(gè)數據訪(fǎng)問(wèn)層接(′?_?`)口
創(chuàng )建一個(gè)名為IStudentRepository的??接口,用于定義對Stud(°□°)ent實(shí)體類(lèi)的通用操作。
public interface IStudentRepository{ IQueryable<StudentInfo(╯°□°)╯> GetAllStudents(); StudentInfo GetStudentById(int id); void AddStudent(StudentInfo student); void UpdateStudent(StudentInfo stud┐(′д`)┌ent); void DeleteStudent(int id);}創(chuàng )建一個(gè)名為StudentRepository的類(lèi),實(shí)現IStudentRepository接口,在這個(gè)類(lèi)中,我們可以使用??EF框架提供的API來(lái)實(shí)現對數據??庫的操作。
public class Stude??ntRepository : IStude??ntRepository{ private readonly="" Student _context; public StudentRepository() { } // 這里可以添加構造函數參數以支(′▽?zhuān)?)持依賴(lài)注入等特性。 public Stude(′?`*)ntRepository(S?tudeヾ(′?`)?nt context) // 這個(gè)構造函數可以用于測試目的。 { _context = context; } public IQuerya??ble<StudentInfo> GetAllStudents() { return _context.StudentInfoes; } public StudentInfo GetStudentB??yId(int id) { return _context.StudentInfoes.Find(id); } public void Ad??dStuden(′?`)t(StudentInfo student) { _context.StudentInfoes.Add(student); } public void Update??Student(StudentInfo student) { _context.Entry(student).State = EntityState.Modified; // 如果實(shí)體已經(jīng)存在于數據庫中,它將被更新;否則,它將被插入。 } public void Delete(′?`)Student(int id) { var student = _context.StudentInfoes.Find(id); //(′ω`) 根據ID查找實(shí)體,如果找不(°□°)到,返回null,如果找到多個(gè)實(shí)體,拋出異常,如果找??到單個(gè)實(shí)體,將其標記為刪除,最后調用SaveChanges方法將更改保存到數據??庫。