我想在edmx中創建一個函數返回定標器值, 如何在SSDL中創建它,以及如何在代碼中訪問它?在edmx創建和用戶用戶定義函數
0
A
回答
0
你有一個問題是你的SSDL是由'EntityModelGenerator'自動生成的,所以編輯它將被重建消滅。您的編輯需要在EDMX文件中完成。所以首先,你必須決定(1)你的返回值是什麼類型的計算(即在應用程序中而不是在數據庫級別上一起增加值),還是(2)它是直接調用數據庫存儲過程?
(1)第一步是將功能XML定義添加到您的EDMX文件:
<Function Name="LineTotal" ReturnType="decimal">
<Parameter Name="lineTotal" Type="MyDbModel.OrderDetail">
<DefiningExpression>
od.Price * od.Quantity
</DefiningExpression>
</Parameter>
</Function>
現在,雖然你的EDMX知道這個功能,你的智能感知不會。所以你必須添加一些代碼來完成這項工作。將這些功能放置在單獨的課堂中是最佳做法。
public class ModelDefinedFunctions
{
[EdmFunction("MyDbModel" , "LineTotal")] //Model Name and Function Name
public static decimal LineTotal(OrderDetail od)
{
throw new NotSupportedException("LineTotal cannot be directly used.");
}
}
Entity Framework將知道將此函數調用重定向到EDMX。對模型不存在的此方法的任何直接調用都會引發異常。
你可以再調用它在你的LINQ查詢像
var productValues = from line in model.OrderDetails
select new
{
od.ProductID,
od.Price,
od.Quantity,
LineTotal = ModeDefinedFunctions.LineTotal(line)
};
(2)如果您是直接將存儲的過程中,更容易將它拖放到EDMX設計師。有一個[FunctionImport()]屬性,但我沒有使用它。您可以拖放並查看它在EDMX文件中生成的代碼?
或者,您可以調用model.ExecuteCommand(<spname> , params object[] values )
存儲過程執行方法。
相關問題
- 1. VBA-創建用戶自定義函數
- 2. JS - 爲自定義js對象創建用戶定義函數
- 3. 在System.Data.SQLite中創建/使用用戶定義的函數?
- 4. 在MySQL中創建用戶定義的函數來處理auto_increment
- 5. 我如何在php中創建用戶定義的函數?
- 6. 如何在sybase中創建用戶定義的函數?
- 7. 用C++ builder 2010爲firebird 2.5創建用戶定義函數
- 8. 如何使用CakePHP創建用戶定義的sql函數?
- 9. 使用用戶數據創建mysql用戶vs自定義表
- 10. 從用戶定義函數
- 11. XSLT用戶定義函數
- 12. 用戶自定義函數
- 13. MySQL:用戶定義函數
- 14. 用戶定義函數
- 15. Apache Pig和用戶定義函數
- 16. 從數據庫調用函數來創建用戶定義的函數
- 17. 調用SQL用戶定義函數中其他用戶定義函數
- 18. 創建DB2400外部用戶自定義表函數?
- 19. 創建一個用戶定義的函數?
- 20. 爲通過PHPExcel生成的excel創建用戶定義函數
- 21. 在用戶定義的函數中創建,刪除和插入臨時表
- 22. Stripe在Swift中創建用戶函數
- 23. 用戶定義函數來創建和求和R中的一個子集
- 24. 用戶定義函數(DEF)在Python 3.2.2
- 25. KeyError:在用戶自定義函數中
- 26. 需要幫助在Excel中使用VBA創建用戶定義函數
- 27. 使用MS SQL Server在ColdFusion中創建SQL用戶定義的函數
- 28. 如何使用用戶定義函數在C++中創建累加器?
- 29. 使用用戶定義的函數
- 30. 用戶自定義函數的用法
我在ssdl中添加了標記,其中在部分中定義了我的sql查詢並將其設置爲iscomposable = true,但它不起作用,我只是想根據產品ID從我的表中獲取產品名稱, –
2012-03-28 07:28:09