如何在 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 个结果。
我只有一个简单的问题,就是如何从数据库中为这些表创建 类,这些 类 将被 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 个结果。