Как сопоставить столбец таблицы SQL Server, начиная с номера (имя столбца: 2DBIT), с проектом ASP.NET MVC (хранимая процедура) CRUD? - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть таблица в SQL Server с несколькими столбцами.Я написал несколько хранимых процедур.Я загрузил эти таблицы и хранимые процедуры в проекте ASP.NET MVC с Visual Studio, с первой базой данных.Visual Studio создала crud для этой таблицы, которая работает с Entity Framework по умолчанию.

Но моя работа - использовать хранимые процедуры для crud.Там начались мои проблемы.

Проблема действительно в том, что у одного из столбцов есть номер в начале его имени: 2DBIT (задание не позволяет мне изменить имя столбца).

Iотладьте код и получите исключение:

System.Data.Entity.Core.EntityCommandExecutionException: «Средство чтения данных несовместимо с указанным« LotContext_NS.IS_MCC6CoaterLot ».Элемент типа 'C2DBit' не имеет соответствующего столбца в считывателе данных с тем же именем. '

LotContext - это мой контекст, а IS_MCC6CoaterLot - это таблица.

Мне кажется, проблема в том, что автоматически сгенерированный код изменяет код отображаемого IS_MCC6CoaterLot.cs в столбце на: C2DBIT.

Компилятор не находит указанный столбецв базу данных и выдает ошибку.

Что я могу сделать, чтобы решить эту проблему?Является ли изменение имени столбца единственной возможностью?

CRUD работает с FW обычного объекта.Если я корректирую код с помощью хранимых процедур, у меня возникает эта проблема.

//the mapped class of the table
public partial class IS_MCC6CoaterLot
{
  public Nullable<bool> C2DBit { get; set; }

}

//the action of the controller
public ActionResult Index()
{
    using (LotContext Db = new LotContext())
    {
        List<IS_MCC6CoaterLot> lots = Db.SP_getAllLots().ToList();
        return View(lots);
    }
}


View(Index):

@model IEnumerable<BASF.Models.SP_getAllLots_Result>
...
@Html.DisplayFor(modelItem => item.C2DBit)



Column-name of the table: "2DBIT"

Когда я отлаживаю код и получаю исключение:

System.Data.Entity.Core.EntityCommandExecutionException: 'The data reader is incompatible with the specified 'LotContext_NS.IS_MCC6CoaterLot'. A member of the type, 'C2DBit', does not have a corresponding column in the data reader with the same name.'

Я думаю, что проблема заключается в том, чтоавтоматически сгенерированный код изменяет код сопоставленного файла IS_MCC6CoaterLot.cs в столбце с помощью: C2DBIT.Компилятор не находит указанный столбец в базе данных и выдает ошибку.Но что я могу сделать, чтобы решить эту проблему?меняет имя столбца единственную возможность?

1 Ответ

0 голосов
/ 24 сентября 2019

Проблема, с которой вы, возможно, сталкиваетесь, заключается в том, что ваши сущности не обновляются для отражения изменений в вашей базе данных.

Ниже приводится довольно приличная ссылка: https://www.entityframeworktutorial.net/efcore/working-with-stored-procedure-in-ef-core.aspx

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