Прежде всего, EF не подходит для нашей среды разработки, поэтому, пожалуйста, не отвечайте "просто используйте EF" ...
Я думаю, что это довольно стандартная дилемма, поэтому я уверен, что должна бытьтак, как это делают большинство профессионалов, с которыми я просто не сталкивался ... поэтому я надеюсь, что вы все покажете мне, что это такое.
Допустим, у вас есть следующие таблицы базы данных:
tblCompanies
ID
NAME
tblDepartments
ID
COMPANY_ID
NAME
tblEmployees
ID
DEPARTMENT_ID
FIRSTNAME
LASTNAME
... как лучше всего представить это в классах в вашем коде?
Я предполагаю, что best выглядит следующим образом:
public class Company
{
public int ID { get; set; }
public string Name { get; set; }
public List<Department> Departments { get; set; }
}
public class Department
{
public int ID { get; set; }
public string Name { get; set; }
public List<Employee> Employees { get; set; }
}
public class Employee
{
public int ID { get; set; }
public string FirstName { get; set;}
public string LastName { get; set; }
}
Я полагаю, что это будет "ООП Правильный подход" к этому.Однако то, что всегда происходит, выглядит примерно так:
public class Department
{
public int ID { get; set; }
public string Name { get; set; }
public int CompanyID { get; set; }
public List<Employee> Employees { get; set; }
}
... главным образом потому, что когда вы извлекаете из базы данных только отдел, у вас будет только идентификатор компании, а не все другие необходимые атрибутычтобы полностью заполнить экземпляр класса Company.
(я использовал здесь довольно ванильный пример, но тот, который я фактически использую в моем текущем проекте, имеет 3 поля, которые он использует для связывания данных вместе, такмысль о том, чтобы иметь три одинаковых поля в нескольких классах, кажется мне неправильной)
Существует ли Наилучшая практика для этих сценариев?Мне не нравится мысль о сохранении одних и тех же данных в нескольких классах просто из-за лени, но я также не люблю возвращать экземпляр класса с заполненным только одним из его полей, потому что это все, что у меня было в то время,