VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

一:插件与环境准备

1、ODAC for Visual Studio 2017  (下载安装)

2、Oracle.ManagedDataAccess   (项目内引用)

3、Oracle.ManagedDataAccess.EntityFramework(项目内引用)

* 以上三个软件或插件的版本号必须一致,示例均以 18.3版本操作。
比如下载的 “ODAC for Visual Studio 2017“ 插件版本为18.3
则项目内引用”Oracle.ManagedDataAccess“、”Oracle.ManagedDataAccess.EntityFramework“插件版本也必须为 18.3

附上”ODAC for Visual Studio 2017“下载链接:
 https://www.oracle.com/database/technologies/dotnet-odacmsi-vs2017-downloads.html

A:下载完成后先安装,下一步.....直至完成即可。

B:tnsnames文件修改
在路径:C:\Program Files (x86)\Oracle Developer Tools for VS2017\network\admin  下的”tnsnames“配置文件加入你的Oracle数据库的配置信息。


以上操作完成以后,剩下的操作步骤就都在VS中完成了。

二:创建MVC项目>引用Oracle插件
A:项目名右键,选择“管理NuGet程序包”。

B:在NuGet程序包界面,切换到 “浏览“选项卡,输入"Oracle"
先安装”Oracle.ManagedDataAccess“,再安装”Oracle.ManagedDataAccess.EntityFramework“。
切记版本必须与事先下载安装的”ODAC for Visual Studio 2017“的版本一致。


三:创建EF实体数据模型
A:在Model层添加一个 ADO.NET实体数据模型


B:DBFirst 选择
|

C:  报错先跳过,后面处理。点击新建链接。






D:选择”Oracle Database“,下方选择 ”ODP.NET,托管驱动程序“



E:数据源选择前面在”tnsnames“配置文件中配置好的,输入数据库ID和密码  (ID会自动变大写,忽略就好)。
   填好密码后点击 ”测试连接“。





测试连接成功后就进行下一步,失败了就检查”tnsnames“配置文件中配置的信息与账号密码。







四:项目Web.config信息修改>数据操作示例
 

A:修改Web.Config文件中的 ”OracleDbContext“ 字符串的Oracle数据库名、账户名、密码。
必须与生成的EF数据实体的字符串配置保持一致。(注意ID 大小写也要保持一致)。

EF模型是通过”OracleDbContext“与数据库进行交互(增删改查),所以必须与EF模型配置统一。





B:数据操作示例






问题解决方式:
1.若添加EF实体模型在选择实体框架界面发生闪退现象,检查文章第一步中说的三个插件版本是否统一。
2.查询数据等与数据库交互出现"ora 12514 tns 无法解析指定的连接标识符" 报错,检查文章第四步中说的
OracleDbContext“字符串与EF模型的连接字符串,账户密码是否一致。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较具体的问题,我来尝试回答一下。 首先,MVC是一种常见的软件架构模式,将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。其中,模型负责处理数据和业务逻辑,视图负责展示数据和用户界面,控制器则负责协调模型和视图之间的交互。 DAO(数据访问对象)模式则是一种数据访问层的设计模式,主要用于将数据访问逻辑与业务逻辑分离,方便进行单元测试和代码维护。 现在来看如何使用MVC + DAO模式完成修改密码功能。下面是一个比较简单的实现方式: 1. 模型层(Model):定义一个User类,包含用户ID、用户名、密码等属性,以及对应的get/set方法。另外,创建一个UserDao接口和对应的UserDaoImpl类,用于访问数据库中的用户数据。 User类示例代码: ``` public class User { private int id; private String username; private String password; // 省略get/set方法 } ``` UserDao接口示例代码: ``` public interface UserDao { User getUserById(int id); User getUserByUsername(String username); void updateUser(User user); } ``` UserDaoImpl类示例代码: ``` public class UserDaoImpl implements UserDao { // 省略数据库连接等代码 public User getUserById(int id) { // 根据ID查询用户信息 } public User getUserByUsername(String username) { // 根据用户名查询用户信息 } public void updateUser(User user) { // 更新用户信息 } } ``` 2. 视图层(View):创建一个修改密码页面,包含原密码、新密码和确认密码等输入框,以及一个“提交”按钮。当用户点击提交按钮时,将输入框中的数据封装成一个User对象,并传递给控制器层处理。 3. 控制器层(Controller):定义一个UserController类,包含处理修改密码请求的方法。该方法首先根据用户ID或用户名从数据库中获取用户信息,然后检查原密码是否正确,如果正确则更新用户密码,并返回修改成功的页面。 UserController类示例代码: ``` public class UserController { private UserDao userDao = new UserDaoImpl(); public String changePassword(int id, String username, String oldPwd, String newPwd, String confirmPwd) { User user; if (id > 0) { user = userDao.getUserById(id); } else { user = userDao.getUserByUsername(username); } if (user != null && user.getPassword().equals(oldPwd)) { if (newPwd.equals(confirmPwd)) { user.setPassword(newPwd); userDao.updateUser(user); return "success"; } else { return "password mismatch"; } } else { return "incorrect password"; } } } ``` 这样,我们就使用MVC + DAO模式完成了修改密码功能。当用户在修改密码页面输入完数据并提交时,控制器会根据用户ID或用户名从数据库中获取用户信息,然后检查原密码是否正确,如果正确则更新用户密码,并返回修改成功的页面。在此过程中,数据访问逻辑与业务逻辑分离,提高了代码的可测试性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值