Web API не добавляет контроллер, ошибка Sqlite? - PullRequest
1 голос
/ 15 февраля 2020

У меня есть приложение. Net Core 2.2, я успешно выполнил миграцию и обновил базу данных, хочу добавить контроллер API с действиями, использующими Entity Framework Core, но он не будет успешно установлен. До этого я делал подобное приложение, и оно прекрасно генерировало контроллеры, я не уверен, в чем проблема, и я пытался решить ее сам, но не смог найти решение.

В консоли пакета я получаю эту информацию:

нераспознанная опция '--useSqlite' в Microsoft.Extensions.CommandLineUtils.CommandLineApplication.HandleUnexpectedArg (команда CommandLineApplication, аргументы String [], аргументы Int32, индекс Строковое имя argTypeName) в Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute (String [] args) в Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute (String [] args) в Microsoft.VisualStudio.Web.CodeGode String [] args)

Я пытался удалить sqlite NuGetpackage, но все равно получаю сообщение об ошибке, я пытался пересобрать приложение и перезапустить Visual Code, но он все равно не работает.

Вот мои файлы

Startup.cs

    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            services.AddDbContext<LoanContext>(options =>
            options.UseSqlite(Configuration.GetConnectionString("DevConnection")));
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();
        }
    }
}

appsetting. json

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "connectionStrings": {
    "DevConnection": "server=(local)\\sqlite;Database=TestDB;User Id=sa;Password=LovelyWorld1;"
  }
}

Loan.cs

 public class Loan
    {
        [Key]

        public int Details { get; set; }
        [Column(TypeName = "nvarchar(250)")]
        [Required]

        public string LoanID { get; set; }
        [Column(TypeName = "nvarchar(10)")]

        public string BorrowerName { get; set; }
        [Column(TypeName = "nvarchar(100)")]

        public string FundingAmount { get; set; }
        [Column(TypeName = "nvarchar(100)")]

        public string RepaymentAmount { get; set; }

    }
}

1 Ответ

1 голос
/ 16 февраля 2020

Я думаю, что главная проблема в атрибутах модели вашего кредита. Они не в правильном месте. например, я думаю, что ключевой атрибут должен быть поверх LoadID . Кроме того, loadID является строкой, и я думаю, что это должно быть int. Я изменил модель следующим образом:

 public class Loan
    {
        [Key] 
        public int LoanID { get; set; }

        [Column(TypeName = "nvarchar(250)"), Required]
        public string Details { get; set; }

        [Column(TypeName = "nvarchar(10)")] 
        public string BorrowerName { get; set; }

        [Column(TypeName = "nvarchar(100)")] 
        public string FundingAmount { get; set; }

        [Column(TypeName = "nvarchar(100)")] 
        public string RepaymentAmount { get; set; }
    }

И затем я удалил ваш init init и добавил новый. Я проверил эту миграцию с SQL сервером и SQLite, и все было в порядке. Просто убедитесь, что при использовании slite вы должны установить строку подключения следующим образом:

"Источник данных = loanDb.db"

Примечание: Лучше использовать десятичную для полей «FundingAmount» и «RepaymentAmount» вместо строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...