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_Entity Sql - Fatal编程技术网

Entity framework 在实体框架中的模型定义函数中定义子查询

Entity framework 在实体框架中的模型定义函数中定义子查询,entity-framework,entity-sql,Entity Framework,Entity Sql,是否可以在实体框架中的模型定义函数中定义子查询?在这种情况下,我们有一个customer对象,它在另一个表中有名称的历史记录。我们希望将最新的名称作为customer对象的一部分返回 模型定义的函数可能如下所示: <Function Name="CurrentName" ReturnType="Edm.String"> <Parameter Name="e" Type="Model.Customer"/> <DefiningExpression>

是否可以在实体框架中的模型定义函数中定义子查询?在这种情况下,我们有一个customer对象,它在另一个表中有名称的历史记录。我们希望将最新的名称作为customer对象的一部分返回

模型定义的函数可能如下所示:

<Function Name="CurrentName" ReturnType="Edm.String">
   <Parameter Name="e" Type="Model.Customer"/>
   <DefiningExpression>
      (select top(1) n.LegalName from Entities.CustomerNames as n order by n.EffectiveDate Desc )
  </DefiningExpression>
  </Function>
不幸的是,上述方法不起作用。我们得到一个错误:

在声明中指定的结果类型“Edm.String” 函数“SNCCModel.CurrentLegalName”与结果类型不匹配 函数定义的“Transient.collection[Transient.rowtypeLEGAL\u NAME,Edm.StringNullable=True,DefaultValue=,MaxLength=512,Unicode=False,FixedLength=False]”

有什么建议吗?这样行吗?很抱歉,但是重构我们的数据模型以在customer表中存储最新的名称不是一个选项

谢谢,
Rick

尝试以下查询:

anyelement选择值top1 n.LegalName from Entities.CustomerNames as n order by n.EffectiveDate Desc

基本上,查询返回的是一组行,预期的结果类型是String。通过指定select VALUE,您可以去掉行和项目字符串集合,并通过将其全部包装在ANYELEMENT中,您可以展平结构并从结果集合中仅返回单个元素(在本例中为唯一的元素)