簡體   English   中英

使用實體框架的自定義功能

[英]Custom Functions with Entity Framework

如何在實體框架中使用自定義函數? 我正在嘗試使用實體框架調用模型定義的函數。 我使用.Net Framework 4.5,正在以XML打開實體模型(.edmx)文件。 我在“ edmx:StorageModels”部分中添加了以下代碼:

  <Function Name="YearsSinceNow" ReturnType="int">
    <Parameter Name="date" Type="datetime" />
    <DefiningExpression>
      Year(CurrentDateTime()) - Year(date)
    </DefiningExpression>
  </Function>

  </Schema></edmx:StorageModels>

我收到錯誤“無法識別的架構元素:DefiningExpression”。 我也嘗試在edmx:ConceptualModels部分中應用此代碼。 我有一個錯誤“無法識別的架構元素功能”

嘗試按以下方式更改定義(在概念模型而不是存儲模型中定義):

這里取

<Function Name="YearsSinceNow" ReturnType="Edm.Int32">
  <Parameter Name="date" Type="Edm.DateTime" />
  <DefiningExpression>
    Year(CurrentDateTime()) - Year(date)
  </DefiningExpression>
</Function>

接下來,將以下方法添加到您的應用程序中,並使用EdmFunctionAttribute將其映射到類似於以下內容的概念模型函數:

[EdmFunction("MyModelName", "YearsSinceNow")]
public static int YearsSinceNow(DateTime date)
{
    throw new NotSupportedException("Direct calls are not supported.");
}

向您的應用程序添加一個公共語言運行時(CLR)方法,該方法映射到概念模型中定義的功能。 若要映射該方法,必須將EdmFunctionAttribute應用於該方法。 請注意,屬性的NamespaceName和FunctionName參數分別是概念模型的名稱空間名稱和概念模型中的函數名稱。 LINQ的函數名稱解析區分大小寫。

閱讀如何:在概念模型(實體框架)中定義自定義功能

對於Function元素,可以將其添加到.edmx文件的Conceptual Model Content部分的Schema元素中,以定義自定義函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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