Таблица обратного инжиниринга EF Scaffold-DbContext - генерирует ошибку неверного имени столбца - PullRequest
0 голосов
/ 05 февраля 2020

VS2019, Core 3.1, C#

Я перенес таблицу из существующей БД в обратном порядке:

Scaffold-DbContext 'my connection string' Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables 'Accounts'

Один из столбцов - AcctSN (varchar) (50), ноль). Он генерируется следующим образом:

public string AcctSN { get; set; }

Не вижу в этом ничего плохого. (Это не ключ, и на нем нет индекса.)

У меня все подключено, и когда я звоню,

var accounts = await dbContext.Account.ToListAsync();

Я получаю следующую ошибку :

"Invalid column name 'AcctSN'."

Вот вся ошибка:

    Class: 16
    ClientConnectionId: {REDACTED GUID}
    Data: {System.Collections.ListDictionaryInternal}
    ErrorCode: -2146232060
    Errors: {Microsoft.Data.SqlClient.SqlErrorCollection}
    HResult: -2146232060
    HelpLink: null
    InnerException: null
    LineNumber: 1
    Message: "Invalid column name 'AcctSN'."
    Number: 207
    Procedure: ""
    Server: "REDACTED"
    Source: "Core Microsoft SqlClient Data Provider"
    StackTrace: "   at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__164_0(Task`1 result)\r\n   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()\r\n   at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)\r\n   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.Get
Result()\r\n   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__17.MoveNext()\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__17.MoveNext()\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__17.MoveNext()\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.AsyncEnumerator.<InitializeReaderAsync>d__18.MoveNext()\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServi
ces.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__7`2.MoveNext()\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.AsyncEnumerator.<MoveNextAsync>d__17.MoveNext()\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.<ToListAsync>d__64`1.MoveNext()\r\n   at System.Runtime.ExceptionService
s.ExceptionDispatchInfo.Throw()\r\n   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.<ToListAsync>d__64`1.MoveNext()\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()\r\n   at REDACTED.AccountRepository.<GetAccounts>d__2.MoveNext() in REDACTED"
    State: 1
    TargetSite: {System.Data.Common.DbDataReader <ExecuteDbDataReaderAsync>b__164_0(System.Threading.Tasks.Task`1[Microsoft.Data.SqlClient.SqlDataReader])}

Это отдельная таблица. Он не имеет отношения к другим таблицам. (Я не строил эту БД.) Внешних ключей нет. У класса есть еще одно строковое свойство, которое успешно связывается со столбцом varchar в БД; это работает, когда я закомментирую это поле AcctSN.

Любые идеи. Все, что я нашел, говорит о проблемах с ключами и связями, но, как я уже говорил выше, это не относится к этой ситуации.

...