Как реализовать классы, которые будут использоваться dapper в C#

#c# #class #properties #dapper

#c# #класс #свойства #dapper

Вопрос:

Это база данных, нажмите здесь, чтобы увидеть ее

У меня есть только один простой вопрос: как создавать классы для этих таблиц из базы данных, эти классы будут использоваться 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;}
  }
 

)

Я написал код, правильно отформатировал его, вы, должно быть, поняли, с чем у меня проблема, это соединительные свойства, закомментированные — проблема с двойной косой чертой

МНЕ ПОТРЕБОВАЛОСЬ МНОГО ВРЕМЕНИ, ЧТОБЫ НАПИСАТЬ, ПОЖАЛУЙСТА, ПОМОГИТЕ, Я ЗНАЮ, ЧТО ПОПРОШАЙНИЧЕСТВО СНИМАЕТ ВОПРОС, НО Я ПРОСТО ХОЧУ ПОКАЗАТЬ, ЧТО Я ПРОВЕЛ СВОЕ ИССЛЕДОВАНИЕ, ОБЪЯСНИЛ, ЧТО В МЕРУ СВОИХ СПОСОБНОСТЕЙ ПУСТЬ ЭТО ОСТАНЕТСЯ КАК ЕСТЬ, НЕ РЕДАКТИРУЙТЕ ЕГО, СКРОМНАЯ ПРОСЬБА 🙏

я не имею в виду никакого неуважения, я просто сильно застрял без времени

Комментарии:

1. Исследование с использованием шаблона T4 от Dapper. Crud или Peta POCO для генерации классов.

2. спасибо, что ответили @DanielP, я действительно хочу поблагодарить вас, никто не отвечал, какой-то парень даже отклонил его, у меня есть поиск, о котором вы меня спросили, и разве это не для entity framework?, и большая часть материала действительно продвинута, так как я проверил много ссылок, связанных с этим,вот почему я хотел, чтобы кто-то отредактировал свойства класса, которые я написал, чтобы сделать его правильным, и я мог бы реализовать их, глядя на этот код, но, похоже, ни одно тело не помогает, спасибо, что ответили еще раз

3. Установите Dapper. Пакет SimpleCRUD nuget для получения шаблона T4 для создания классов, представляющих существующие таблицы базы данных. Это не Entity Framework. После того, как у вас будут сгенерированы классы, вы можете начать следовать руководствам Dapper.

Ответ №1:

Самый простой способ использовать Dapper — не пытаться сопоставлять один к одному с таблицами. Вместо этого создайте объекты бизнес-домена, которые соответствуют вашим запросам. Я не совсем понимаю вашу схему (является ли mem членом или это что-то связанное с памятью).

Вместо этого рассмотрим классическую систему заказов с тремя таблицами: 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
 

С помощью этого запроса я бы подготовил класс, который выглядит как

 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 , вы можете получить результаты с помощью

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

После этого results будет IEnumerable<CustomerOrderItems> содержать до десяти результатов.

Комментарии:

1. Я как бы сдался после этого понижения, и вы просто заполнили все пробелы в моем понимании всего одним ответом, я был действительно сыт по горло, потому что такие парни, как вы, мы, новые разработчики, можем где-то добиться, спасибо, чувак, я так долго этим занимался, спасибоснова @Flydog57