2014-10-17 178 views
2

因此,我從我的數據庫不是在dbo(默認)架構中導入存儲過程到我的實體模型。實體框架6和存儲過程與架構名稱

存儲過程的名稱不是dbo.MyProc;相反,它是:person.MyProc(注意架構名稱是「人」,而不是「DBO」)

出於某種原因,當我嘗試執行存儲過程我得到一個錯誤,就像的EntityFramework一無所知MyProc的是個人模式。以下是我嘗試在我的代碼來執行存儲過程:

using (var dbContext = new DataModel.PersonEntity()) 
{ 
    dbContext.dbOp_DeletePerson(personId); 
} 

這是我得到的錯誤:

EntityCommand.CommandText的值是無效的 StoredProcedure的命令。該EntityCommand.CommandText值的格式必須是「ContainerName.FunctionImportName」

和追查下來一點的 ,這裏是從實體框架的代碼自動生成線:

回報 ( (IObjectContextAdapter)this).ObjectContext.ExecuteFunction(" dbOp_DeletePerson ", PersonId);

重申一下,dbOp_DeletePerson在「person」架構中不是dbo。

在此先感謝您的幫助!

回答

1

我想這是周圍的工作在你的Model.Context.tt(我不喜歡它,但哦) http://www.dotnetbits.com/entity-framework-6-t4-templates/

  1. 尋找 「edmFunction.Name」
  2. 更換它以 「edmFunction.FullName」

    11

+0

是啊告訴我關於它。不幸的是,我們現在使用EF6;請更新我,如果你找到更好的替代 – DotNet98 2014-12-10 18:15:05

+0

現在是否有修復? – Julian50 2015-04-30 07:24:39

0

抱歉無法發表評論,所以..

現在有沒有更好的解決方法?我的意思是修復永久性的東西? 因爲修改後需要重新創建edmx文件,所以每次都要進行此修正。 更好的東西?