Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Entity framework 跨多个表的自定义实体_Entity Framework - Fatal编程技术网

Entity framework 跨多个表的自定义实体

Entity framework 跨多个表的自定义实体,entity-framework,Entity Framework,我急需一些英孚专家的建议。除了在DDD中跨多个表之外,如何创建自定义实体?据我所知,有3种可能的解决方案: 在模型中创建自定义实体并为其添加DefiningQuery,它充当该实体的视图,本质上是在纯SQL中连接多个表 将自定义实体创建为具有其他实体作为其属性的POCO类。使用LINQ进行查询时,首先将需要的数据投影到匿名对象中,然后投影到该自定义实体中 在DB中创建一个跨多个表的视图,并将其添加到模型中 第一个选项将创建对特定数据源实现(Oracle)的依赖,因为我们需要编写Oracle SQ

我急需一些英孚专家的建议。除了在DDD中跨多个表之外,如何创建自定义实体?据我所知,有3种可能的解决方案:

  • 在模型中创建自定义实体并为其添加DefiningQuery,它充当该实体的视图,本质上是在纯SQL中连接多个表

  • 将自定义实体创建为具有其他实体作为其属性的POCO类。使用LINQ进行查询时,首先将需要的数据投影到匿名对象中,然后投影到该自定义实体中

  • 在DB中创建一个跨多个表的视图,并将其添加到模型中

  • 第一个选项将创建对特定数据源实现(Oracle)的依赖,因为我们需要编写Oracle SQL查询

    第二个解决方案中的自定义对象是在模型之外定义的,TBH是我最喜欢的对象,除了有人必须理解LINQ:)之外,我看不到它有任何真正的缺陷

    第三种选择意味着创建大量的DB视图,我不确定我们的DBA是否会对此感到高兴


    请分享您的意见,哪种解决方案对您来说更合理。如果您的数据库表正确配置了您可以使用的一对一关系,请多谢。如果没有一对一的关系,从EF的角度来看,表的生成是不确定的


    除了您提到的选项之外,您还可以尝试在EDMX文件中使用映射到自定义POCO的-ESQL查询。这就像隐藏在映射内部的第一个和第二个选项的组合(独立于存储)。问题是QueryView只支持ESQL的子集,因此它实际上取决于您要映射的内容。

    如果您的数据库表正确配置了一对一关系,则可以使用它。如果没有一对一的关系,从EF的角度来看,表的生成是不确定的

    除了您提到的选项之外,您还可以尝试在EDMX文件中使用映射到自定义POCO的-ESQL查询。这就像隐藏在映射内部的第一个和第二个选项的组合(独立于存储)。问题是QueryView只支持ESQL的子集,所以它实际上取决于您想要映射什么