[英]Define a sub-query in a Model-Defined Function in Entity Framework
是否可以在實體框架的模型定義函數中定義子查詢? 在這種情況下,我們有一個客戶對象,該客戶對象在另一個表中具有名稱歷史記錄。 我們希望返回最新名稱作為該客戶對象的一部分。
模型定義的函數可能看起來像這樣:
<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>
不幸的是,以上方法不起作用。 我們收到以下錯誤:
函數“ SNCCModel.CurrentLegalName”的聲明中指定的結果類型“ Edm.String”與結果類型“ Transient.collection [Transient.rowtype(LEGAL_NAME,Edm.String(Nullable = True,DefaultValue =,MaxLength = 512,Unicode = False,FixedLength = False))]'的函數定義
有什么建議么? 這應該工作嗎? 抱歉,但是不能重構數據模型以在客戶表中存儲最新名稱。
謝謝,瑞克
請嘗試以下查詢:
ANYELEMENT(從Entities.CustomerNames中選擇VALUE top(1)n.LegalName為n順序,由n.EffectiveDate Desc表示)
基本上,查詢返回的是行的集合,預期結果類型為String。 通過指定select VALUE,您可以擺脫該行(並投影只是字符串的集合),並將其全部包裝在ANYELEMENT中,可以展平結構並僅從結果集合中返回單個元素(在這種情況下,是唯一的元素) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.