Как отобразить несколько отношений SQL на объекты C # - PullRequest
1 голос
/ 09 апреля 2019

Я разрабатываю настольное приложение C # WPF, в котором мне нужно регулярно читать / писать в базу данных SQL (сервер SQL). Теперь я хочу отобразить данные из базы данных на объекты в C #. Я не могу использовать Entity Framework, поэтому я делаю все свои данные с помощью Dapper, slapper automapper и хранимых процедур.

В качестве примера я смоделировал этот пример базы данных

enter image description here

Объекты C # будут выглядеть примерно так.

public class Manager {

   public string Name { get; set; }
   public string Phone { get; set; }
   public List<Facility> Facilities {get; set;}
} 

public class City {

   public string Name { get; set; }
   public string Description{ get; set; }
   public List<Facility> Facilities {get; set;}
} 

public class Facility {

   public string Name { get; set; }
   public string Description{ get; set; }
} 

Теперь я запрашиваю данные из таблиц с пометкой в ​​нотации подчеркивания от Slapper:

const string sql = @"SELECT 
                                    m.Name,
                                    m.Phone,
                                    m.ManagerId,
                                    f.FacilityId As Facility_FacilityId,
                                    f.WorkerCount As Facility_WorkerCount,
                                    f.SquareFoot As Facility_SquareFoot,
                                    f.Description As Facility_Description,
                                    c.CityId AS Facility_City_CityId,
                                    c.Name AS Facility_City_Name,
                                    c.Description AS Facility_City_Description,

                                    from Manager m  
                                    INNER JOIN  dbo.Facility f  ON  m.ManagerId = f.ManagerId
                                    INNER JOIN  dbo.City c  ON  f.CityId = c.CityId";


            using (System.Data.IDbConnection _connection = new System.Data.SqlClient.SqlConnection("Connstrint"))
            {
               var test = _connection.Query<dynamic>(sql);
                Slapper.AutoMapper.Configuration.AddIdentifiers(typeof(Facility), new List<string> { "FacilityId" });
                Slapper.AutoMapper.Configuration.AddIdentifiers(typeof(Manager), new List<string> { "ManagerId" });
                Slapper.AutoMapper.Configuration.AddIdentifiers(typeof(City), new List<string> { "CityId" });



                var testNetwork = (Slapper.AutoMapper.MapDynamic<Manager>(test) as IEnumerable<Manager>).ToList();
                System.Diagnostics.Debugger.Break();
            }

Я понимаю, что отображение не может работать полностью, потому что объект не может перейти в Город в Объектах. Должен ли я карту дважды? один раз от менеджера потом из города? Или есть другой шаблон дизайна, который я должен использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...