【发布时间】:2017-02-23 11:43:04
【问题描述】:
我是新手,经验不足一年。可悲的是,我的公司里没有人可以问,所以我花了很多时间来找出问题所在。
我刚刚完成了 asp.net mvc 项目并尝试只更改 DB
来自:SQL Server
至:甲骨文
在我最初的项目中,我从 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 中没有问题,因此我搜索并安装了适用于 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)
{
}
然后我修改了linq部分:
using (var haksaContext = new OracleContext())
{
try{
var haksa = haksaContext.HaksaMembers.Where(m => m.stnt_numb == model.Stnt_Numb).ToList();
if (haksa.Count == 1){
但它不检索数据和客家语。计数为 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 中的 connectionString 相距甚远。。这个 connectionString 是从哪里来的。。
Data Source=(localdb)\mssqllocaldb;AttachDbFilename=|DataDirectory|OraleContext.mdf;Initial Catalog=OraleContext;Integrated Security=True;MultipleActiveResultSets=True
如果我从原始项目中调试,该部分显示的 connectionString 与我在 web.config 中键入的完全相同
【问题讨论】:
-
所以代码没有抛出任何异常?
-
Oracle 的连接字符串与 sql server 的连接字符串看起来也有很大不同。 Oracle 使用 tnsnames.ora 文件将连接映射到特定的 oracle 服务实例。您发布的连接字符串是一个完整的条目,您可以在 tnsnames.ora 文件中找到它。将这些信息保存在连接字符串中而不是 tnsnames 文件中是我书中的一个优点,因为它可以减少您对 oracle 客户端的依赖。
-
不,先生,它在显示奇怪的 Data Source=(localdb)\mssqllocaldb; 之前没有显示异常;~~ 在这一步之后,它会抛出异常,例如 Enumerable 没有返回任何内容。我认为这只是因为图片中的connectionString。不知道这是从哪里来的xd
标签: c# asp.net-mvc oracle linq entity-framework-6