我有这个型号:
public partial class SystemUser
{
[Display(Name = "User")]
public string Username { get; set; }
[Display(Name = "Pass")]
public string Password { get; set; }
[Display(Name = "Admin")]
public Nullable<bool> Type { get; set; }
}
此函数返回SystemUser的所有记录:
public IEnumerable<object> GetAll()
{
var Users = Ctx.SystemUsers.ToList().Select(u => new SystemUser
{
Username = u.Username,
Type = u.Type
});
return Users.ToList();
}
但此查询也有密码列 我不需要这个。我可以从查询中删除此列吗? 我不想使用anonymus类型,因为它删除了dataannotation
答案 0 :(得分:1)
您应该在GetAll()
方法中返回Anonymous Types
。像这样更改GetAll
:
public IEnumerable<object> GetAll()
{
var Users = Ctx.SystemUsers.ToList().Select(u => new
{
User = u.Username,
Admin = u.Type
});
return Users.ToList();
}
答案 1 :(得分:0)
没有原始sql,没办法做到这一点。您始终使用Entity Framework获取整个表行。
答案 2 :(得分:0)
试试这个:
UILabel *a = [UILabel new];
a.text = @"Hi";
a.textColor = [UIColor blackColor];
[a sizeToFit];
UIView *b = [UIView new];
b.frame = CGRectMake(0, 0, CGRectGetWidth(a.frame) + 18.0f, 19.0f);
[b addSubview:a];
[a mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(b.mas_centerX);
}];
答案 3 :(得分:0)
您可以使用DTO和AutoMapper Queryable Extensions来支持这种情况: -
public class SystemUserDto
{
[Display(Name = "User")]
public string Username { get; set; }
[Display(Name = "Admin")]
public Nullable<bool> Type { get; set; }
}
...
Mapper.CreateMap<SystemUser, SystemUserDto>();
...
public IEnumerable<SystemUserDto> GetAll()
{
var Users = Ctx.SystemUsers.Project().To<SystemUserDto>();
}
答案 4 :(得分:0)
基于不止一个问题的不必要的意见交换,听起来像你真正要求的是:
我有一个包含
Password
字段的类型,我从实体框架的数据库中获取该字段。此类型包括我需要在自动生成的UI中使用的数据注释。我无法控制用户界面。如何为UI提供包含这些数据注释的类型,但不包含Password
字段?
在这种情况下,请定义另一种类型:
public class SystemUserViewModel
{
[Display(Name = "User")]
public string Username { get; set; }
[Display(Name = "Admin")]
public Nullable<bool> Type { get; set; }
}
转换为该类型:
Ctx.SystemUsers.ToList().Select(u => new SystemUserViewModel
{
Username = u.Username,
Type = u.Type
});
如果您使用匿名对象,则您没有类定义,因此您没有任何属性(数据注释)。如果您使用SystemUser
类型,那么您将拥有Password
属性。要使用既不是这些东西的东西,你必须定义一个类型。