EF轻松连接Oracle数据库 (ef 连接Oracle数据库)
在现代化的企业应用程序开发中,许多应用都需要使用关系型数据库存储和管理数据。Microsoft的实体框架(EF)是一种ORM(对象关系映射)工具,允许开发人员使用面向对象的模型操作数据库,而无需手动编写SQL查询语句。虽然EF最初是针对SQL Server数据库开发的,但它也可以轻松地与其他关系型数据库进行集成,例如Oracle数据库。本文将介绍如何使用EF和Oracle数据库快速和简单地构建企业应用程序。
1. 安装Oracle数据提供程序
您需要在开发机器上安装Oracle数据提供程序。这可以是Oracle Data Access Components(ODAC)或Oracle Developer Tools for Visual Studio(ODT)。两者都包含链接Oracle数据库所需的驱动程序和其他必要组件。例如,ODAC包括Oracle.Data.EntityFramework6 NuGet包。
2. 创建EF数据访问层
接下来,您需要创建一个EF数据访问层,以便在应用程序中使用EF。这可以通过使用ASP.NET Core Web应用程序模板的“空”选项来实现。然后,您可以通过在Visual Studio的“工具”菜单中选择“NuGet包管理器”并搜索“EntityFramework.Oracle”,来安装与Oracle一起使用的EF扩展程序包。此软件包允许EF与Oracle数据库进行无缝交互。
3. 配置应用程序链接字符串
在开始编写代码之前,您需要在应用程序中添加与Oracle数据库的连接字符串。在“appsettings.json”文件(这是用于存储应用程序设置的ON文件)中,添加以下代码:
“OracleConnection”: {
“ConnectionString”: “Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myOracleHost)(PORT=myOraclePort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myOracleServiceName)));User Id=myOracleUserId;Password=myOraclePassword;”
}
这是一个标准Oracle连接字符串,您需要将其中的“myOracleHost”、“myOraclePort”、“myOracleServiceName”、“myOracleUserId”和“myOraclePassword”分别替换为实际的连接字符串。
4. 创建EF实体
在以上步骤配置完毕之后,您可以创建数据库实体类。这些类代表数据库表,EF使用它们来执行CRUD操作(创建、读取、更新、删除)。通过在EF数据访问层中创建一个新文件夹,“Models”,并添加一个新类,即可开始创建实体类。下面是一个例子:
public class Employee
{
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Eml { get; set; }
public DateTime HireDate { get; set; }
}
这是一个代表Employee表的实体类,其中包含员工的几个属性。注意,EF默认使用约定来选择数据库表和列,并将实体类中的属性映射到数据库表列。如果表或列名与默认约定不同,则可以使用Data Annotations或Fluent API(EF中流利的API接口)来进行自定义映射。
5. 初始化EF数据上下文
接下来,您需要创建EF数据上下文。该上下文代表了整个数据库,它可以跨多个表进行查询、添加、更新或删除操作。但是,这里需要注意的是:EF数据上下文是应用程序中对EF功能的入口点。在ASP.NET Core应用程序中,该上下文通常使用依赖注入(DI)在Startup.cs文件中进行配置。下面是一个简单的例子:
public class EmployeeContext : DbContext
{
public DbSet Employees { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseOracle(Configuration.GetConnectionString(“OracleConnection”));
}
}
这是一个代表Employee数据库表的数据上下文类。在这个类中,您需要设置EF与Oracle数据库之间的链接,并为每个实体类定义一个DbSet属性。请注意,这个上下文类是从EF的DbContext类派生出来的。
6. 编写实体操作
一旦EF数据访问层、连接字符串、实体类和数据上下文都设置好了,就可以开始编写CRUD操作了。在以下示例中,我们将实现在Employee表中创建、读取、更新和删除员工的操作:
– 创建:
using (var context = new EmployeeContext())
{
var newEmployee = new Employee
{
FirstName = “John”,
LastName = “Doe”,
Eml = “johndoe@eml.com”,
HireDate = DateTime.Now
};
context.Employees.Add(newEmployee);
context.SaveChanges();
}
这是一个简单的代码片段,它将一个新Employee对象添加到数据库,并将更改保存到数据库。
– 读取:
using (var context = new EmployeeContext())
{
var employees = context.Employees.ToList();
foreach (var employee in employees)
{
Console.WriteLine($”Employee Id: {employee.EmployeeId}, Name: {employee.FirstName} {employee.LastName}, Eml: {employee.Eml}, Hire Date: {employee.HireDate}”);
}
}
这是一个简单的代码片段,它读取Employee表中的所有行,将它们打印到控制台上,并显示员工的姓名、电子邮件和雇佣日期。
– 更新:
using (var context = new EmployeeContext())
{
var employeeToUpdate = context.Employees.FirstOrDefault(e => e.EmployeeId == 1);
if (employeeToUpdate != null)
{
employeeToUpdate.FirstName = “Jane”;
employeeToUpdate.LastName = “Doe”;
context.SaveChanges();
}
}
这是一个简单的代码片段,它找到Employee表中ID为1的员工并将其姓名更新为“Jane Doe”。
– 删除:
using (var context = new EmployeeContext())
{
var employeeToDelete = context.Employees.FirstOrDefault(e => e.EmployeeId == 1);
if (employeeToDelete != null)
{
context.Employees.Remove(employeeToDelete);
context.SaveChanges();
}
}
这是一个简单的代码片段,它找到Employee表中ID为1的员工并将其从数据库中删除。
7. 测试和部署应用程序
您需要对应用程序进行单元测试,并将其部署到生产环境中。通过这些步骤,您可以将Oracle数据库集成到您的企业应用程序中,并使用EF来轻松创建、读取、更新和删除数据库记录。
结论