明确排除实体框架核心中的属性



目前我在实体框架核心中存在一些性能问题。我用以下功能读取了很多数据:

Database.OperatingInstructionReferences.Include(x => x.OperatingInstruction).Include(x => x.State).Where(x => x.OperatingInstruction.Department.Id == user.Department.Id && (x.OperatingInstruction.Type.Equals(type) || x.OperatingInstruction.Type.Equals(ManageNavPageInstruction.ListProduct))).ToList(); 

这个操作非常慢,因为在OperatingInstruction的类/对象中是一个非常长的字符串,有很多有效负载。字符串属性称为Content。我可以只显式排除这个字符串属性吗?

也许是这样的:

Database.OperatingInstructionReferences.Include(x => x.OperatingInstruction.Exclude(y=>y.Content)).Include(x => x.State).Where(x => x.OperatingInstruction.Department.Id == user.Department.Id && (x.OperatingInstruction.Type.Equals(type) || x.OperatingInstruction.Type.Equals(ManageNavPageInstruction.ListProduct))).ToList(); 

我知道使用select函数是有可能的,但我正在寻找其他东西。我需要除content属性之外的所有其他属性,所以我认为select函数有点开销,因为我必须声明所有其他属性。

也许有人能帮我。

谢谢你的帮助。

实现这一点的一种简单且可重复使用的方法是创建一个无钥匙实体类型,该类型表示";视图";要查询的数据的。在您的情况下;视图";将获得CCD_ 1属性。

您可以自己决定,是想为这个新的无键实体实现一个实际的数据库侧视图(使用.ToView()(,还是只将其映射到底层表(使用.ToTable()(,而不在模型类上定义Content属性(或通过数据注释或FluentAPI显式忽略它(。

有关详细信息,请参阅无钥匙实体类型:映射到数据库对象。

相关内容

最新更新