2017-12-28 5 views
0

Ich versuche einen Aufruf der gespeicherten Prozedur von Entity fromawork 5.0 zu MySQL zu machen. Ich kann eine Verbindung zu MySQL herstellen, aber wenn ich eine gespeicherte Prozedur aufruft, erhalte ich leere Daten (keine Daten). Wie könnte ich dieses Problem beheben -Stored Procedure Call von Enitiy Framwork 5 zu MySQL

Im Folgenden Code verwende ich auf Anruf gespeicherte Prozedur zu machen -

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

ich noch etwas beachten ist, dass, wenn ich .edmx Datei von gespeichert porcedure bin Aktualisierung erhalte ich leeres Modell wie dieses -

namespace MySQLwithEntity 
    { 
     using System; 

     public partial class usp_GetFileType_Result 
     { 

     } 
    } 

So füllte ich es manuell wie unten -

namespace MySQLwithEntity 
    { 
     using System; 

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

Aber noch leere Werte Ich erhalte -

enter image description here

Antwort

0

Nach der Suche nach Stunden fand ich Lösung von this.It könnte hilfreich für jemanden -

Grund der oben Art und Weise SP von MySQL von Aufruf nicht funktionierte Das automatisch erstellte Entitätsmodell war leer. Die .edmx-Datei erzeugte KEINE Zuordnung für die Spalten, die von MySQL SP zurückgegeben wurden. manuell

namespace MySQLwithEntity 
    { 
     using System; 

     public partial class usp_GetFileType_Result 
     { 

     } 
    } 

entititis Put -

namespace MySQLwithEntity 
    { 
     using System; 

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

Erstellt mappinng manuell in .edmx Datei wie unten, obwohl es nicht empfohlen wird, aber ich hatte keine andere Wahl. .edmx Datei wird für „CSDL Inhalt“ auf und „C-S-Mapping Inhalt“ Abschnitt bearbeiten, wenn Sie es als XML-Datei öffnen -

<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> 

Zweitens ist der Code SP zu nennen. Ich änderte Code SP zu nennen wie unten -

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 in MySQL ist equivelent von EXEC von MS SQL.