Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Model First,如何预加载连接表以实现快速、亚秒级的连接?_C#_Linq_Entity Framework_Sql Server Ce_Plinq - Fatal编程技术网

C# 使用Model First,如何预加载连接表以实现快速、亚秒级的连接?

C# 使用Model First,如何预加载连接表以实现快速、亚秒级的连接?,c#,linq,entity-framework,sql-server-ce,plinq,C#,Linq,Entity Framework,Sql Server Ce,Plinq,首先,我想使用实体框架模型跨几个表进行快速、亚秒级的连接。简化数据模型类似于以下内容: 视频:ID主键;名字 标签:ID主键;名字 TaggedVideos:TagID-FK;视频识别FK 当表未在实体框架中建模或公开时,是否有方法预加载TaggedVideos?在搜索带有特定标签的所有视频时,我试图避免数据库被点击。理想情况下,所有三个表都将加载到集合中,然后我可以使用PLINQ进行连接 如果我向TaggedVideos添加另一列,我可以实现这一点,但我更喜欢一个优雅的解决方案,它不会扰乱数据

首先,我想使用实体框架模型跨几个表进行快速、亚秒级的连接。简化数据模型类似于以下内容:

视频:ID主键;名字

标签:ID主键;名字

TaggedVideos:TagID-FK;视频识别FK

当表未在实体框架中建模或公开时,是否有方法预加载TaggedVideos?在搜索带有特定标签的所有视频时,我试图避免数据库被点击。理想情况下,所有三个表都将加载到集合中,然后我可以使用PLINQ进行连接

如果我向TaggedVideos添加另一列,我可以实现这一点,但我更喜欢一个优雅的解决方案,它不会扰乱数据模型


任何帮助都将不胜感激。

缓存标签,并确保对视频集合具有向后导航属性

然后,您可以访问标记的缓存版本并查找相关的视频,而无需加入


如果不想缓存整个视频,请在缓存代码中选择use some like Videos.Selectv=>v.Id以仅选择Id并缓存该Id。

当我对缓存的标记使用反向导航时,会出现一个错误:ObjectContext实例已被释放,无法再用于需要连接的操作。这看起来缓存仍在命中数据库,错误来自于我关闭了用于构建缓存的上下文。我可能是错的。@james您需要做几件事,首先确保您已经断开了项,您可以通过添加。AsNoTracking到您的查询中来执行此操作,请参阅我在这里的帖子:其次确保您的集合是通过在查询结束时使用.ToArray枚举的。我仍然使用EF 4.0,它不支持AsNoTracking。是时候升级了。我明天就试试看。