我在C#中使用实体框架。我想从数据库中获取数据时排除一些列。例如,我的学生桌有10个列。表中有一些列,例如CreatedDate,CreatedBy,CreateRole,UpdatedDate,Updatedby和UpdatedRole。我想要从下面的数据库中获取列表时排除此列的通用解决方案。
我在找下面的东西
context.Students
.Exclude("CreatedDate","CreatedBy","CreateRole","UpdatedDate","Updatedby","UpdatedRole")
.ToList();
请不要在下面的解决方案中提出建议,因为这不是我想要的。
context.Students.Select(p=>new {
p.Name,
p.Surname,
p.Number,
p.BirthDate
}).ToList();
答案 0 :(得分:1)
如我的评论所述,我将为偶尔需要的属性创建一个模型:
public class CreateAndUpdatePropertiesModel
{
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
public DateTme ModifiedDate { get; set; }
public string ModifiedBy { get; set; }
// ...and so on
}
然后将此模型用作我的主要模型中的属性:
public class StudentModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
// ...rest of the properties here
// And then add the CreateAndUpdateProperties model as a property
public CreateAndUpdateProperties { get; set; }
}
然后,当您从Entity Framework中选择项目时,可以使用
.Include(s => s.CreateAndUpdateProperties)
如果要包括创建和更新属性。没有这个包含,它将为空。
答案 1 :(得分:0)
您可以如下修改DBContext。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Students>().Ignore(t=>t.CreatedDate).Ignore(t=>t.CreatedBy).Ignore(t=>t.CreateRole).Ignore(t=>t.UpdatedDate).Ignore(t=>t.Updatedby).Ignore(t=>t.UpdatedRole);
base.OnModelCreating(modelBuilder);
}