如何在 C# 中实现 类 以供 dapper 使用

How to Implement classes to be used by dapper in C#

我只有一个简单的问题,就是如何从数据库中为这些表创建 类,这些 类 将被 dapper 使用,任何类型的实现都有效,天气它是您的人员或行业标准,足以让经验不足的新开发人员可以使用它执行粗略操作

(这不是实验的问题,因为起跑线是我不知道如何做这些,而且绝对没有来源解释我需要什么,我一直在网上搜索,信不信由你一个月,我很感谢你对我的关心,只是尝试和搜索,但我必须恭敬地拒绝无意冒犯,我只是想 crud,我希望这不会占用你太多时间

 public class mem                                     (main table to which every table connects)
{
public int Mem_id {get;set;}
public string Mem_name {get;set;}
public string Mem_gndr {get;set;}
public DateTime Mem_dob {get;set;}
//public int adrs_adrs_id {get;set;}
//public int union_union_id {get;set;}
//public int alot_alot_id {get;set;}
}

public class adrs                            (one to one mandatory relationship with mem table)
{
public int adrs_id {get;set;}
public string adrs_col1 {get;set;}
public string adrs_col2 {get;set;}
}


public class alot                        (one to one optional relationship with mem table)
{
public int alot_id {get;set;}
public string alot_no {get;set;}
}

public class union                           (one to many mandatory relationship with mem table)
{
public int union_id {get;set;}
public string union_nm {get;set;}
}



 public class ci                       (one to many optional relationship with mem table)
{
public int ci_id {get;set;}
public string ci_mob {get;set;}
public string ci_eml {get;set;}
//public int mem_Mem_id {get;set;}
}

 public class flat                                  (many to many relationship with mem table)
{
public int flat_id {get;set;}
public string flat_type {get;set;}
}

   public class mem_has_flat                      (this is the bridge class between mem and flat)
  {                                                (many to many relationship bridge)
    //public int mem_Mem_id {get;set;}
    //public int flat_flat_id {get;set;}
  }

)

代码我写好了,格式正确,你一定明白我哪里有问题,是连接属性,注释掉的是双正斜杠的问题

这花了我很多时间来写请帮忙,我知道乞讨可以解决这个问题,但我只是想表明我已经完成了我的研究,并尽我所能解释了这一点,让它保持原样不要编辑它,卑微的请求

我没有不尊重的意思,我只是没有时间严重卡住

使用 Dapper 最简单的方法是不要尝试与表进行一对一映射。相反,构建映射到您的查询的业务域实体。我不太明白您的架构(mem 是成员还是与内存有关)。

相反,考虑一个包含三个表的 classic 订单系统:Customer、Order 和 Order_Item。

Customer
    Customer_Id int,
    Customer_Name varchar(50)
    -- etc 

Order 
    Order_Id int,
    Customer_Id int,
    Order_Date DateTime,
    -- etc

Order_Item
    Order_Item_Id int,
    Order_Id int,
    Item_Name varchar (50),
    Item_Description varchar(500),
    Item_Sold_Price decimal(12, 2),
    Item_Quantity int,
    --etc

我在该描述中遗漏了可空性、索引和 FK 信息。

现在假设您想向用户显示他们最近购买的 10 件商品的列表,并显示购买日期

SELECT TOP (10)
    o.OrderDate as PurchasedDate,
    oi.Item_Name as Item,
    oi.Item_Description as Description, 
    oi.Item_Quantity as Quantity, 
    oi.Item_Sold_Price as Price
FROM Order_Item oi
INNER JOIN Order o ON o.Order_Id = oi.Order_Id
INNER JOIN Customer c ON c.Customer_Id = o.Customer_Id
WHERE c.Customer_Id = @Customer_Id

通过该查询,我准备了一个 class 看起来像

public class CustomerOrderItems {
    public DateTime PurchasedDate { get; set; }
    public string Item { get; set; }
    public string Description { get; set; }
    public int Quantity { get; set; }
    public decimal Price { get; set; }
}

请注意,成员名称和类型与查询结果集的列名称和类型相匹配。现在,假设您在名为 query 的字符串变量中有该查询,在名为 customerId 的变量中有客户 ID,您可以使用

获得结果
var results = sqlConn.Query<CustomerOrderItems>(query, new {Customer_Id = customerId});

之后,results 将包含一个 IEnumerable<CustomerOrderItems>,最多包含 10 个结果。