Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Asp.net mvc EF延迟加载不适用于使用DB视图的拆分实体_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc EF延迟加载不适用于使用DB视图的拆分实体

Asp.net mvc EF延迟加载不适用于使用DB视图的拆分实体,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我尝试使用实体拆分,以便使用从数据库视图收集的属性扩展实体。如果我直接加载分割的实体,这很好,但是如果我有一个实体通过导航属性连接分割的实体,它就不起作用了 让我们粗略地说它看起来像这样 [实体A]-[实体B]-[实体C] 如果实体C没有被拆分,我可以得到实体A并通过实体B导航到实体C,这是通过使用惰性加载的navigationproperties完成的(据我所知)。这很有魅力 如果实体C是包含DB表和DB视图数据的拆分实体,则上述从实体a到实体C的导航返回null。另一方面,如果我直接加载实体

我尝试使用实体拆分,以便使用从数据库视图收集的属性扩展实体。如果我直接加载分割的实体,这很好,但是如果我有一个实体通过导航属性连接分割的实体,它就不起作用了

让我们粗略地说它看起来像这样 [实体A]-[实体B]-[实体C]

如果实体C没有被拆分,我可以得到实体A并通过实体B导航到实体C,这是通过使用惰性加载的navigationproperties完成的(据我所知)。这很有魅力

如果实体C是包含DB表和DB视图数据的拆分实体,则上述从实体a到实体C的导航返回null。另一方面,如果我直接加载实体C,它将被完全加载,其中既包含DB表的数据,也包含DB视图的数据


有什么特别的东西我没有想到吗?

这是吉尔·芬克的一篇文章,可能会有所帮助

如果实体C是包含DB表和DB视图数据的拆分实体,则上述从实体a到实体C的导航返回null。另一方面,如果我直接加载实体C,它将被完全加载,其中既包含DB表的数据,也包含DB视图的数据

你说的听起来不错。如果正确拆分表,那么这些属性在实体C中将不再可用


如果您不“一直”需要实体C的属性,那么您的第一个映射场景就足够了

我的问题是,分割的实体通过内部连接(请参阅此处的讨论)进行连接,我所期望的是类似于左连接的东西,因此如果存在额外表中的属性,则添加它们,如果不存在则忽略它们。事实上,如果附加表中没有条目,则整个实体不会初始化


上面提到的延迟加载问题只是巧合,因为一方面我加载了一个包含传统属性的实体,另一方面加载了一个没有这样做的实体,因此甚至没有按照前面所述进行初始化。

感谢您的回答。这不是我问题的解决办法,但你链接中的文章帮助我理解了内部连接关系才是问题所在