排除使用Entity Framework获取数据的列

时间:2018-11-30 07:47:12

标签: c# entity-framework linq

我在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();

2 个答案:

答案 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);
}