Entity framework 在实体框架中的模型定义函数中定义子查询
是否可以在实体框架中的模型定义函数中定义子查询?在这种情况下,我们有一个customer对象,它在另一个表中有名称的历史记录。我们希望将最新的名称作为customer对象的一部分返回 模型定义的函数可能如下所示: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>
<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中,您可以展平结构并从结果集合中仅返回单个元素(在本例中为唯一的元素)