2016-12-23 5 views
0

Ich habe Probleme in der unteren Teil des Codes. Alles sieht gut aus, aber ich bekomme immer noch unter Fehler:Dapper Join Query Fehler im Mapping

'MetalItems' does not contain a definition for 'metals' and no extension method 'metals' accepting a first argument of type 'MetalItems' could be found (are you missing a using directive or an assembly reference?) E:\VS2010\Jewellery\SilverSpoon\SilverSpoon\API\models\MetalItems.cs 38 52 SilverSpoon

CODE

class MetalItems 
{ 
    public int ID { get; set; } 
    public int metal_id { get; set; } 
    public string item_name { get; set; } 
    public Metals metals {get; set;} 

    public IEnumerable<MetalItems> findAllJoin<MetalItems>() 
    { 
     IEnumerable<MetalItems> data = null; 

     using (var sqlConnection = Database.getConnection()) 
     { 
      data = sqlConnection 
       .Query<MetalItems, Metals, MetalItems>(
       @"SELECT * FROM metal_items mi JOIN metals m ON mi.metal_id = m.metal_id ORDER BY mi.metal_id", 
             (mi, m) => 
             { 
              mi.metals = m; 
              return mi; 
             }, 
             splitOn: "metal_id"); 
     } 
     return data; 
    } 
} 

class Metals 
{ 
    public int metal_id { get; set; } 
    public string metal_name { get; set; } 
    public decimal rate_per_gram { get; set; } 
    public decimal making_charges { get; set; } 
} 

Fehlerzeile unter Snapshot anzuzeigen in ist;

enter image description here

Antwort

1

Im Allgemeinen bin ich nicht furchtbar Fonds von Klassen mit Datenoperationen in ihnen, würde es vorziehen, diese Logik zu seiner eigenen Datenschicht zu trennen, aber wenn dies ist, was Sie wollen ...

Nur das "generische" entfernen? Teil Ihrer findAllJoin Methode und es sollte gut funktionieren

 public IEnumerable<MetalItems> findAllJoin() 
     { 
      IEnumerable<MetalItems> data = null; 

      using (var sqlConnection = Database.getConnection()) 
      { 
       data = sqlConnection 
        .Query<MetalItems, Metals, MetalItems>(
        @"SELECT * FROM metal_items mi JOIN metals m ON mi.metal_id = m.metal_id ORDER BY mi.metal_id", 
              (mi, m) => 
              { 
               mi.metals = m; 
               return mi; 
              }, 
              splitOn: "metal_id"); 
      } 
      return data; 
     } 
+0

Vielen Dank, es hat mir geholfen. –