我是一个拥有不到一年的经验的新手。可悲的是,我没有人会问我的公司,所以我花了很多时间来找出问题所在。从asp.net mvc中使用linq检索Oracle数据库
我刚刚完成asp.net mvc的项目,并试图改变只DB
来源:SQL服务器
要:甲骨文
我在原来的项目,我从SQL Server中检索这样的数据。效果很好。
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于是我去搜索并安装NuGet包甲骨文没有问题,Oracle开发工具VS 2015年我成功添加Oracle数据库到我的服务器资源管理器。而在OracleDB的目标表具有相同的列名,结构(实际上也有像在数据类型有些不同INT < - >号)。
If I query using Query Window, I can select from target table. Seems no problem here..
我复制原来的DbContext(HaksaContext),使OracleContext和修改它像一张照片
public class HaksaContext : DbContext //-> OracleContext
{
public HaksaContext() : base("HaksaContext") { } //-> OracleContext
public DbSet<UniversityMember> HaksaMembers{get; set;} //Didn't fix here bcuz table structure is the same
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
然后我体改LINQ的一部分。这
using (var haksaContext = new OracleContext())
{
try{
var haksa = haksaContext.HaksaMembers.Where(m => m.stnt_numb == model.Stnt_Numb).ToList();
if (haksa.Count == 1){
但不检索数据和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)))" />
connectionString, DataSource
这是远从我在web.config中的connectionString ..这是哪里的connectionString从何而来..
Data Source=(localdb)\mssqllocaldb;AttachDbFilename=|DataDirectory|OraleContext.mdf;Initial Catalog=OraleContext;Integrated Security=True;MultipleActiveResultSets=True
如果我从原来的项目调试该部分显示与我在web.config中输入的完全相同的connectionString
所以代码不抛出任何异常? – Fran
也是Oracle的连接字符串将看起来与sql服务器有很大不同。 Oracle使用tnsnames.ora文件将连接映射到特定的oracle服务实例。您发布的连接字符串是您可以在tnsnames.ora文件中找到的完整条目。将此信息保留在连接字符串中而不是tnsnames文件是我书中的一个优点,因为它使您不太依赖于Oracle客户端。 – Fran
没有先生,它没有显示异常之前,它显示奇怪的数据源=(localdb)\ mssqllocaldb; ~~ 在那一步之后,它抛出异常像Enumerable没有返回任何东西。我认为这只是因为图片中的连接字符串。不知道xd来自哪里 –