2017-12-28 6 views
0

Entity fromawork 5.0からMySQLにストアドプロシージャコールを作成しようとしています。私はMySQLに接続することができますが、私はストアドプロシージャを呼び出すときに、私は空のエンティティ(データなし)を取得しています。どのように私はこの問題を解決することができ -Enitiy Framwork 5からMySQLへのストアドプロシージャコール

コード以下

を私は、ストアドプロシージャへの呼び出しを行うために使用しています -

public virtual ObjectResult<usp_GetFileType_Result> usp_GetFileType() 
     { 
      return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_GetFileType_Result>("usp_GetFileType"); 
     } 

私はより多くの事に観察し、私が保存されporcedureから.edmxファイルを更新していたときに私が取得していますということですこのような空のモデル -

namespace MySQLwithEntity 
    { 
     using System; 

     public partial class usp_GetFileType_Result 
     { 

     } 
    } 

は、だから私は、以下のように手動でいっぱい -

namespace MySQLwithEntity 
    { 
     using System; 

     public partial class usp_GetFileType_Result 
     { 
      public int FileTypeId { get; set; } 
      public string FileTypeName { get; set; } 
     } 
    } 

のしかし、まだ、私は取得しています空の値 - 働いていなかったのMySQLからのSPを呼び出すの上記方法の

理由 -

enter image description here

答えて

0

時間を探した後、私は誰かのために役立つthis.Itかもしれないの解決策を見つけました自動生成されたエンティティモデルが空白だったため、.edmxファイルはMySQL SPから戻ってきた列のマッピングを生成しませんでした。

namespace MySQLwithEntity 
    { 
     using System; 

     public partial class usp_GetFileType_Result 
     { 

     } 
    } 

入れentititis手動 - 以下のような.edmxファイルに手動で

namespace MySQLwithEntity 
    { 
     using System; 

     public partial class usp_GetFileType_Result 
     { 
      public int FileTypeId { get; set; } 
      public string FileTypeName { get; set; } 
     } 
    } 

作成さmappinngは、お勧めしますが、私は選択の余地がなかったではありません。 .edmxファイルはXMLファイルとして、それを開くと、「CSDLの内容」および「C-Sマッピングコンテンツ」セクションを編集する必要があります -

<FunctionImportMapping FunctionImportName="usp_GetFileType" FunctionName="Model1.Store.usp_GetFileType"> 
       <ResultMapping> 
       <ComplexTypeMapping TypeName="Model1.usp_GetFileType_Result"> 
       <ScalarProperty Name="FileTypeId" ColumnName="FileTypeId" /> 
       <ScalarProperty Name="FileTypeName" ColumnName="FileTypeName" /> 
       </ComplexTypeMapping> 
      </ResultMapping> 
      </FunctionImportMapping> 

第二には、SPに呼び出すためのコードです。私は以下のようにSPを呼び出すコードを変更 - MySQLで

public virtual IList<usp_GetFileType_Result> GetCustOrderHist() 
     { 
      IList<usp_GetFileType_Result> data = ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<usp_GetFileType_Result>("CALL usp_GetFileType();").ToList(); 

      return data; 
     } 

Callは、MS SQLのEXECのequivelentです。

関連する問題