Entity Framework получает данные из ВСЕГО столбца
У меня есть вызов API getUser, который возвращает ВСЕ данные из базы данных в указанном столбце, но я хочу исключить некоторые вещи; номер телефона, адрес электронной почты и т. д.
Попробовал возиться с LINQ, сменив модель Builder, изменив опцию Builder
Искал любой SQL, говорящий "Select * from", но ничего не нашел
Удаление вещей в моей UserModel работает, однако это уродливый способ сделать это.
Result<UserModel> result = new Result<UserModel>();
try
{
using (var db = new ComeatDBContext(optionsBuilder.Options))
{
var user = db.User
.Include(f => f.Nationality)
.Include(f => f.State)
.FirstOrDefault(e => e.Id == id && !e.IsDeleted);
result.ResponseObject = (new UserModel()).FromUser(user);
var house = db.House.FirstOrDefault(e => e.UserId == user.Id);
if (house != null)
{
result.ResponseObject.House = ( new HouseModel() ).FromHouse(house);
}
result.Success = true;
}
Ожидается указание, какие данные включать (или не включать), но вместо этого я получаю все, если только я не установил значения в "null" после того, как они были доставлены БД.
1 ответ
.FirstOrDefault(...)
это то, что вызывает выполнение запроса к базе данных (SQL). Он заполняет все свойства, которые определены для объекта. Затем объект данных преобразуется в ваш UserModel
объект, когда вы выполняете (new UserModel()).FromUser(user);
,
Если вы хотите повторно использовать свой класс UserModel, но не заполняете все столбцы, вы можете сделать что-то вроде этого;
var userModel = db.User
.Select(x => new UserModel { Name = x.Name, Id = x.Id })
.FirstOrDefault(e => e.Id == id && !e.IsDeleted);
result.ResponseObject = userModel;