Entity Framework 从整个列中获取数据
Entity Framework getting data from the ENTIRE column
我有一个 api 调用 getUser,它 returns 数据库中指定列的所有信息,但我想排除一些东西;电话号码、电子邮件等
尝试摆弄 LINQ、更改 modelBuilder、更改 optionBuilder
已查找任何 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"。
.FirstOrDefault(...)
是导致执行基础数据库查询 (SQL) 的原因。它将填充在实体上定义的所有属性。当您执行 (new UserModel()).FromUser(user);
.
时,数据实体将转换为您的 UserModel
对象
如果您想重复使用 UserModel class 但不想填充所有列,您可以这样做;
var userModel = db.User
.Select(x => new UserModel { Name = x.Name, Id = x.Id })
.FirstOrDefault(e => e.Id == id && !e.IsDeleted);
result.ResponseObject = userModel;
我有一个 api 调用 getUser,它 returns 数据库中指定列的所有信息,但我想排除一些东西;电话号码、电子邮件等
尝试摆弄 LINQ、更改 modelBuilder、更改 optionBuilder
已查找任何 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"。
.FirstOrDefault(...)
是导致执行基础数据库查询 (SQL) 的原因。它将填充在实体上定义的所有属性。当您执行 (new UserModel()).FromUser(user);
.
UserModel
对象
如果您想重复使用 UserModel class 但不想填充所有列,您可以这样做;
var userModel = db.User
.Select(x => new UserModel { Name = x.Name, Id = x.Id })
.FirstOrDefault(e => e.Id == id && !e.IsDeleted);
result.ResponseObject = userModel;