【发布时间】:2019-05-02 08:37:43
【问题描述】:
我在 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();
【问题讨论】:
-
您可能也不想为您的模型添加代码。正确的解决方案取决于您的模型中是否包含这些属性。
-
大多数时候,我不使用这个列。但有时我会使用。所以,我不能从模型中删除。如果我从模型中删除,我无法在需要时访问,例如 CreatedDate 列 @Noceo
-
我不知道任何干净的方法,只加载一些模型属性,而不总是排除它们(使用
[NotMapped]属性)。您可以将很少使用的属性移动到它们自己的模型中,并将其包含在主模型中(创建一对一的关系)。这样就可以只按需加载这些额外的属性。 -
感谢您的回复@Noceo
-
我忘记问的一个重要问题是:为什么有时需要排除这些属性?在大多数情况下,性能损失可能非常小,以至于无法证明增加代码的复杂性是合理的。
标签: c# entity-framework linq