[英]Entity Framework 6 and Stored Procedures with Schema names
所以我從我的數據庫中導入了一個不在 dbo(默認)模式中的存儲過程到我的實體模型。
存儲過程的名稱不是 dbo.MyProc; 而是:person.MyProc(注意模式名稱是“person”,而不是“dbo”)
出於某種原因,當我嘗試執行存儲過程時,我收到一個錯誤,好像 EntityFramework 對 MyProc 是個人模式一無所知。 這是我嘗試在我的代碼中執行存儲過程的方法:
using (var dbContext = new DataModel.PersonEntity())
{
dbContext.dbOp_DeletePerson(personId);
}
這是我得到的錯誤:
EntityCommand.CommandText 的值對於 StoredProcedure 命令無效。 EntityCommand.CommandText 值必須采用“ContainerName.FunctionImportName”形式
稍微追溯一下,這是 Entity Framework 自動生成的代碼行:
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("dbOp_DeletePerson", PersonId);
重申一下,dbOp_DeletePerson 處於“person”模式而不是 dbo。
在此先感謝您的幫助!
我想這是解決辦法(我不喜歡它,但是很好) http://www.dotnetbits.com/entity-framework-6-t4-templates/
在你的 Model.Context.tt 中尋找“edmFunction.Name”
用“edmFunction.FullName”替換它
抱歉無法評論,所以..
現在有更好的解決方案嗎? 我的意思是修復永久性的東西? 因為修改后您需要重新創建edmx文件,因此每次都要進行此修正。 更好的東西 ?
我遇到了這個問題並通過更改重復存儲過程之一的函數導入名稱(和函數導入結果名稱(如果過程返回數據))來修復它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.