首页 > 解决方案 > 来自 asp.net 核心的 SqlServer 连接神秘地失败了

问题描述

在下Ubuntu 18Startup.cs我有这个连接字符串。注意Database=

var connectionStringOpts =
               "Server=xxx.xx.xxx.xxx;Integrated Security=false;Trusted_Connection=false;Database=Options;User Id=xxxx;Password=xxxxxxx;Connection Timeout=100";

               
            services.AddDbContext<OptionsDbContext>(o =>
                   o.UseSqlServer(connectionStringOpts));

DbContext看起来像这样(例如,Opt_I30是数据库的表Options):

using Microsoft.EntityFrameworkCore;

using OptionsAPI.Entities;

namespace OptionsAPI.Services
{
     public class OptionsDbContext : DbContext
     {
          public DbSet<Option> Opt_I30 { get; set; }
          public DbSet<Option> Opt_I30ITM { get; set; }
          public DbSet<Equity> Table_Underlying { get; set; }
          public DbSet<OHLC> OHLC { get; set; }
          public OptionsDbContext(DbContextOptions<OptionsDbContext> options)
               : base(options)
          {
               Database.EnsureCreated();
          }
     }
}

OptionsController.cs,我尝试这样查询SqlServer

public class OptionsController : Controller
     {
          private System.DateTime globaldt = new System.DateTime(2017, 6, 1, 10, 0, 0);
          //private string globaldtStr = "20170601T10:00:00";

          private OptionsDbContext _context;
          public OptionsController(OptionsDbContext context)
          {
               _context = context;
          }

private System.Collections.Generic.List<Option> 
      GetOptionChainDataFrame(string symbol, string date)
      {
           List<Option> opts = null;

           try
           {
                Console.WriteLine("In: GetOptionChainDataFrame");

                DateTime quotedate = System.DateTime.Parse(date);

                opts = _context.Opt_I30                        
                     .Where(x => x.UnderlyingSymbol == symbol && 
                                 x.QuoteDatetime == quotedate && 
                                 x.Root.Length == 3)
                     .Select(x => new Option{ 
                                    UnderlyingSymbol = x.UnderlyingSymbol, 
                                    QuoteDatetime = x.QuoteDatetime, 
                                    Expiration = x.Expiration, 
                                    Strike = x.Strike, 
                                    OptionType = x.OptionType, 
                                    Bid = x.Bid, 
                                    Ask = x.Ask, 
                                    UnderlyingBid = x.UnderlyingBid, 
                                    UnderlyingAsk = x.UnderlyingAsk, 
                                    IV = Math.Round(x.IV, 4)
                                    }
                               )
                          .OrderBy(x => x.QuoteDatetime)
                          .ThenBy(x => x.Expiration)
                          .ThenBy(x => x.OptionType)
                          .ThenBy(x => x.Strike)
                          .ToList()
                          ;
           }
           catch(Exception ex)
           {      
                Console.WriteLine("Option exception" + ex.ToString());
           }
           finally
           {                    
           }     

           return opts;  
      }

...

我得到这个错误。我不知道它在哪里获得“选项” From(似乎是自动插入的),因为我说数据库是复数形式的“选项”。这令人抓狂,因为这曾经有效,我不知道发生了什么变化。

Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (81ms) [Parameters=[@__8__locals1_symbol_0='?' (Size = 450), @__quotedate_1='?' (DbType = DateTime2)], CommandType='Text', CommandTimeout='30']
      SELECT [x].[UnderlyingSymbol], [x].[QuoteDatetime], [x].[Expiration], [x].[Strike], [x].[OptionType], [x].[Bid], [x].[Ask], [x].[UnderlyingBid], [x].[UnderlyingAsk], ROUND([x].[IV], 4) AS [IV]
      FROM [Option] AS [x]
      WHERE (([x].[UnderlyingSymbol] = @__8__locals1_symbol_0) AND ([x].[QuoteDatetime] = @__quotedate_1)) AND (CAST(LEN([x].[Root]) AS int) = 3)
      ORDER BY [x].[QuoteDatetime], [x].[Expiration], [x].[OptionType], [x].[Strike]
System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'Option'.

标签: sql-serverasp.net-coreubuntu-18.04

解决方案


推荐阅读