Отказ от ответственности: новичок в C # - первый раз после разработки в QA в течение нескольких лет.
Я понимаю, что разновидности этого вопроса задавались ранее (наследование в LINQtoSQL и т. П.), Но я надеюсь, что задаю вопрос по-другому.
В моей базе данных у меня будет супер-тип «Событие» и несколько подтипов: например, «Конференция», «Встреча» и «Встреча».
Event
Id (PK)
TypeId (FK EventTypes.Id)
Title
Conference
Id (PK, FK Event.Id)
Cost
Topic
Meeting
Id (PK, FK Event.Id)
Location
Organizer
Appointment
Id (PK, FK Event.Id)
Time
Address
Я использую приложение Rob Conery MVC StoreFront в качестве справочного материала. По сути, он получает данные из базы данных и создает объекты класса, вручную сопоставляя Event.Id с db.Event.Id и т. Д.
Я хотел бы сделать это с моей моделью данных Events - я бы хотел получить все события и иметь динамическое выражение LINQ, чтобы создавать различные типы событий на основе некоторых критериев (например, TypeId).
var result = from e in db.Events
select new IEvent
{
// Little help? ;)
};
Было бы замечательно найти способ сделать это так, чтобы каждый тип события знал, как сохранить себя и извлечь себя - я боюсь писать один и тот же код для каждого типа, изменяя только поля. Имеет смысл?
Я увидел заданный вопрос, и кто-то ответил что-то вроде:
public bool Save<T>() {}
Проблема в том, что я не уверен, куда поместить этот код. Я также не уверен, должен ли я использовать интерфейс IEvent или частичный класс Event.
Теперь я закончу этот вопрос с монстром дополнительным Спасибо тем, кто может предложить помощь / предложения.
-
РЕДАКТИРОВАТЬ: Хороший прогресс - переход от базы данных к представлениям все с IEvent :) ( Этот вопрос очень помог )
public class SqlEventRepository : IEventRepository
public IQueryable<IEvent> getEvents() {
// Get Events without doing a query for each type..possible?
var eventType1 = {query};
var eventType2 = {query};
return {concat of all queries};
}
public bool SaveEvent(IEvent) {
// Can I avoid calling a save function for each type of event?
}