2016-12-23 53 views
0

我在下面的一段代码中遇到问题。一切看起来都很好,但我仍然得到以下错误:Dapper加入查询映射错误

'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; } 
} 

错误行低于快照显示;

enter image description here

回答

1

一般我是在他们的数据操作的类不是非常的基金,希望这种逻辑分离,以它自己的数据层,但如果这是你想要的...

刚删除“通用”?你的findAllJoin方法的一部分,它应该工作得很好

 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

非常感谢,它帮助了我。 –