У меня есть таблица в 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.Компилятор не находит указанный столбец в базе данных и выдает ошибку.Но что я могу сделать, чтобы решить эту проблему?меняет имя столбца единственную возможность?