簡體   English   中英

在實體框架的模型定義函數中定義子查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM