Как хранить два класса наследуют один и тот же интерфейс в базе данных SQL
привет
Мне трудно понять, как это должно храниться в базе данных sql
public interface IEmployee { string Name { get; set; } decimal CalculateSalary(); } public class Emp1 : IEmployee { public string Name { get; set; } //some other properties //..... public decimal CalculateSalary(){...} } public class Emp2 : IEmployee { public string Name { get; set; } //some other properties //..... public decimal CalculateSalary(){...} }
Что я уже пробовал:
если каждый конкретный класс emp имеет свою собственную таблицу, как применить метод get all employees?
Или у меня должна быть таблица BaseEmp для хранения имен со столбцом emptyype, и каждый конкретный класс emp имеет свои собственные сведения в другой таблице? если это правильный путь, должны ли эти типы быть перечислением в моей библиотеке или есть лучший способ?
CHill60
Emp1 и Emp2 звучат скорее как экземпляры Employee, чем типы employee. Лично я бы в базовой таблице сотрудник со столбцом типа работника. Я бы абсолютно не хотел, чтобы каждый конкретный класс был в своей собственной таблице.
M. Rawan
спасибо за ваш ответ, я думал, что тоже только запутался в том, где хранить эти типы (должен ли это быть int, который передается каждому сотруднику constrcutor, или перечисление в моей библиотеке, или просто фиксированный int только для чтения в каждом классе)?
CHill60
Так что то, как вы храните его в базе данных, полностью зависит от вас. Если вы используете перечисление в SQL, вам, возможно, придется изменить схему таблицы, если появится новый тип. Но вы можете хранить перечисление из вашего пользовательского интерфейса как Int в вашей базе данных. Или вы можете использовать varchar или даже char(1). Все, что вы думаете, будет наиболее значимым, но, возможно, не займет слишком много места.
Однако с точки зрения ваших классов - вы ничего не передадите конструкторам - класс должен знать, что это за "тип" сотрудника, например, используя жестко закодированное значение для "типа" в каждом конструкторе класса, где все классы наследуются от базового класса "сотрудник".
M. Rawan
спасибо за Ваше ясное объяснение, Я думаю, что вы должны опубликовать это как ответ, чтобы я мог отметить его.