首页 > 解决方案 > 类似于 .NET 中的“稀疏字段集”

问题描述

我试图找到描述我想要什么以及它是否存在的词汇。

我有一个表格,其中显示了来自大型对象的一些数据点。仅为表加载整个对象非常慢。有没有办法只将我想要的几个属性传递到前面而不必定义新对象?

我在JSON API中发现了一种名为 Sparse Fieldsets 的东西,我想知道 .NET 是否存在类似的东西以另一个名称。

更新: 与另一位编码员交谈时,我意识到在后端和数据库之间实现类似的东西并对该表进行特定调用可能更有意义。如果我需要创建一个新对象来支持这一点,我仍然需要解决。我认为如果我只保留相同的对象但将表不需要的所有连接对象都清空,它仍然会更快。但也许这被认为是不好的做法?此外,我们正在使用实体框架来实现它的价值。

更新 2: 我刚刚创建了一个新查询,没有所有这些,.Include()并且可以很好地满足我的需要:

_dataContext.ApplePie
.Include(f => f.Apples).ThenInclude(f => f.Apple)
        .Include(f => f.Sugars).ThenInclude(f => f.MolecularStructure)
        .Include(f => f.Recipe)

标签: asp.netasp.net-mvcasp.net-core

解决方案


Maybe you are looking for Anonymous Types?

For example, if you had a typed object with three properties, but you only wanted to operate on two:

var threePropThing = new ThreePropertyThing { Id = 1, Message = "test", ExtraProperty = "ex" };

var myAnonThing = new { Id = threePropThing.Id, Message = threePropThing.Message };  

Best practice would be to not pass this anonymous object around. But, if you really needed to, you could return it as type object.

Typically, when passing data around in c#, you want to have it typed.


推荐阅读