Не считываются данные типа char с помощью Entity Framework
Оффтоп. Такое ощущение, что эта тема пересекается с той, которая указана в вопросе, словно это звенья одной цепи: Не могу добавить данные в БД с помощью Entity Framework
Только сейчас возникает проблема с загрузкой данных из БД.
Есть проект таблицы ContactsInfo
в MS SQL:
Её содержимое:
Я загружаю эти данные в контекст данных ApplicationContext
, а затем в ContactViewModel
:
internal class ContactViewModel
{
public int ID { get; }
public string PhoneNumber { get; }
public string? PhoneType { get; }
public string? Name { get; }
public string? Surname { get; }
public string? Patronymic { get; }
public char Sex { get; }
public ContactViewModel(Contact Contact)
{
ID = Contact.ID;
PhoneNumber = Contact.PhoneNumber;
using ApplicationContext ApplicationContext = new();
PhoneType = ApplicationContext.PhoneTypes?.FirstOrDefault(PhoneType => PhoneType.ID == Contact.PhoneTypeID)?.PhoneTypeText ?? null;
ContactInfo? ContactInfo = ApplicationContext.ContactsInfo?.FirstOrDefault(ContactInfo => ContactInfo.ID == Contact.ContactInfoID) ?? null;
Name = ContactInfo?.Name ?? null;
Surname = ContactInfo?.Surname ?? null;
Patronymic = ContactInfo?.Patronymic ?? "—";
Sex = (ContactInfo?.Sex == '\0' ? '?' : ContactInfo?.Sex) ?? '?';
}
}
Выглядит это так:
Собственно говоря, на этом фото и можно увидеть, что пол почему-то не прогрузился из БД/ApplicationContext
и из-за этого поставилась заглушка в виде символа '?'
.
Почему это происходит? В отладке значение Sex
строки из загруженной таблицы ContactsInfo
почему-то равно 0 '\0'
, что означает нулевой символ (null character).
Вопрос — почему? С другими данными же всё в порядке, они загружаются правильно. Эта какая-то особенность типа char
? Или char(1)
в БД?