C# 使用linq在asp.net mvc中从Oracle数据库检索数据
我是个新手,经验不足一年。可悲的是,我的公司里没有人可以问,所以我花了很多时间来找出问题所在 我刚刚完成asp.net mvc项目,并尝试仅更改DBC# 使用linq在asp.net mvc中从Oracle数据库检索数据,c#,asp.net-mvc,oracle,linq,entity-framework-6,C#,Asp.net Mvc,Oracle,Linq,Entity Framework 6,我是个新手,经验不足一年。可悲的是,我的公司里没有人可以问,所以我花了很多时间来找出问题所在 我刚刚完成asp.net mvc项目,并尝试仅更改DB 发件人:SQL Server 收件人:甲骨文 在我最初的项目中,我从SQLServer检索到了类似这样的数据。效果很好 using (var haksaContext = new HaksaContext()) { try{ var haksa = haksaContext.HaksaMembers.Where(m =>
发件人:SQL Server
收件人:甲骨文 在我最初的项目中,我从SQLServer检索到了类似这样的数据。效果很好
using (var haksaContext = new HaksaContext())
{
try{
var haksa = haksaContext.HaksaMembers.Where(m => m.stnt_numb == model.Stnt_Numb).ToList();
if (haksa.Count == 1){
我的代码在SQL Server中没有问题,因此我搜索并安装了适用于Oracle的Nuget软件包、适用于VS 2015的Oracle开发人员工具,并成功地将Oracle DB添加到我的服务器资源管理器中。OracleDB中的目标表具有相同的列名、结构(实际上在数据类型(如int number)上存在一些差异)
若使用查询窗口进行查询,则可以从目标表中进行选择。这里似乎没有问题:
我复制了原始的dbcontext(HaksaContext)来创建OracleContext,并像下一张照片一样对其进行了修改
public class HaksaContext : DbContext //-> OracleContext
{
public HaksaContext() : base("HaksaContext") { } //-> OracleContext
public DbSet<UniversityMember> HaksaMembers{get; set;} //Didn't fix here because table structure is the same
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
但它不检索数据,还有haksa。计数为0
我尝试调试,发现连接字符串很奇怪。在我的web.config中,我使用了这个
<add name="OracleContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=myid;Password=mypw;(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=targetdbIP)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=haksadb)))" />
如果我从原始项目进行调试,则该部分显示的连接字符串与我在web.config中键入的完全相同。默认情况下,Entity Framework使用与DbContext同名的连接字符串 在您的情况下,将连接字符串更改为
<add name="HaksaContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="..." />
我知道这可能太晚了:)所以代码没有抛出任何异常?而且Oracle的连接字符串看起来将与sql server的连接字符串大不相同。Oracle使用tnsnames.ora文件将连接映射到特定的Oracle Server实例。您发布的连接字符串是您可以在tnsnames.ora文件中找到的完整条目。在我的书中,将此信息保存在连接字符串中而不是tnsnames文件是一个优点,因为它可以减少您对oracle客户端的依赖。不,先生,在显示奇怪的数据源=(localdb)\mssqllocaldb;~~之前,它不会显示异常在那个步骤之后,它抛出异常,就像Enumerable并没有返回任何东西一样。我认为这只是因为图片中的连接字符串。不知道那是从哪里来的
Data Source=(localdb)\mssqllocaldb;AttachDbFilename=|DataDirectory|OraleContext.mdf;Initial Catalog=OraleContext;Integrated Security=True;MultipleActiveResultSets=True
<add name="HaksaContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="..." />