Почему Entity Framework создает свойство с добавленным номером в хранимой процедуре, MyProp и MyProp1? - PullRequest
1 голос
/ 09 марта 2020

Моя хранимая процедура возвращает различные столбцы, она не является переменной, результаты всегда фиксированы.

Когда я нажимаю «Получить информацию о столбце» в Entity Framework, все столбцы правильно отображаются в окне предварительного просмотра, включая MyProp.

Однако, когда я нажимаю кнопку создания сложного типа, она заканчивается на

string MyProp {get; set;}
string MyProp1 {get; set;}

среди всех других полей в классе сложного типа.

Is есть причина, по которой это происходит? Там не должно быть MyProp1. С остальными колонками все в порядке.

ETA:

Ничего необычного в edmx. В spro c возвращаются несколько вещей того же типа (nvarchar(30)). EDMX отформатирован для них так же, как и MyProp. Я не вижу никаких столкновений, таких как наличие класса с тем же именем, что и у свойства, или чего-то подобного.

Я очистил имена полей, но MyProp - это одно из обнаруженных полей точно так же, как и остальные, он появляется только один раз, имя не конфликтует и т. д. c, но в выходном файле .cs он имеет значение, равное MyProp и MyProp1

Pic

1 Ответ

0 голосов
/ 09 марта 2020

Вырвав свои волосы на некоторое время, я их исправил.

Тип столбца: nvarchar(30) null

В spro c я заполняю его из Таблица, в которой поле равно nvarchar(20) null, в основном мой spro c - это код (упрощенный, может быть не точным на 100%):

DECLARE @Results TABLE (
    [MyProp] [nvarchar](30) Null
)

Insert Into @Results
    Select [MyProp] from MyTable

SELECT * From @Results

В MyTable, MyProp на самом деле nvarchar(20) Null, а не nvarchar(30) Null.

Таким образом, несмотря на то, что нет потери точности, потому что она меньше, по некоторым причинам EF, похоже, исследует, как заполняется таблица, и создает дополнительное поле. Я понятия не имею, почему, но изменение MyProp на nvarchar(20) Null в соответствии с таблицей, из которой он заполняется, исправило это.

Озадаченный.

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