Мне нужно реализовать следующее, но я не уверен, что лучший способ:
Я создаю функциональность сообщений для приложения MVC.
Существует два типа сообщений:
- Публичные сообщения
- Личные сообщения
Единственное отличие состоит в том, что публичные сообщения имеют поля даты ValidFrom и ValidTo. Я пробовал следующее:
Способ 1, интерфейс
Интерфейс сообщения. Два класса PrivateMessage и PublicMessage, которые реализуют интерфейс. PublicMessage имеет два дополнительных свойства. Сопоставил его с двумя разными таблицами с помощью структуры лица.
Способ 2, наследование
Создайте базовый класс сообщений, который имеет все поля. Создайте два класса, которые наследуют базовый класс. Можно сопоставить класс сообщения с БД, поэтому у меня есть только одна таблица для хранения записей. Кажется, я не могу сопоставить интерфейс с EF Code.
Метод 3, свойство Enum для указания типа сообщения
public enum MessageType
{
Public = 1,
Private = 2,
}
У меня просто есть один класс сообщений, но добавьте поле, чтобы показать, какой это тип сообщения. Карты легко на одну таблицу, и легко для поиска сообщений типа «Public». Я должен сделать мини-обертку вокруг enum, потому что EF не создаст для нее поле в БД.
Достаточно ли двух полей свойств для обоснования двух разных классов? Поиск в двух таблицах базы данных для непрочитанных сообщений немного неэффективен?
Есть ли правильный способ сделать это?
Сначала я использую Entity Framework Code 4.3.