2010-01-29 4 views
2

Я разрабатываю базу данных для приложения ASP.NET MVC. Я эксперт в том и нет, и мне любопытно, какой лучший подход подходит для следующего фрагмента базы данных:Обработка таблиц различных типов в ASP.NET MVC

Мы будем хранить события в нашей базе данных. Каждое событие будет иметь другой тип с различными полями, исключающими один или несколько типов. Пример:

Events 
* Id 
* EventTypeId 
* AllEventTypes_Field 

EventType0 
* EventId (FK) 
* EventType0_Field 

EventType1 
* EventId (FK) 
* EventType1_Field 

В конце мы будем иметь несколько типов событий. У меня возникает соблазн поместить все поля в одну большую таблицу событий с нулевыми полями, где это необходимо. Или мы можем выделить таблицы в Supertype/Subtype: Events, EventType1, EventType2 и т. Д. (Как указано выше).

Для части дизайна базы данных я хочу выбрать то, что имеет наибольший смысл и является «самым легким» для среды MVC. По существу: какой путь даст наименьшее количество головных болей? :)

Для супер/подтипов, нужно ли перетаскивать таблицу Events и создавать классы для каждого подтипа из главной таблицы событий? Если это так, ссылки на статьи по этому вопросу будут очень полезными.

Спасибо за понимание и понимание!

+1

Вы знаете, если вы используете Linq2SQL или Entity Framework для объектов ORM базы данных? Вы должны были выбрать его, когда добавили его в свой проект. – TJB

+0

LINQ. Хотя честно, я не могу точно сказать, как LINQ2SQL и EF отличаются. Разве это делает мир различий? Извините за ответ newboe :) – Dan

ответ

1

В этой статье Microsoft обсуждает дополнительные отношения один-к-одному, который, по существу, что вы описываете:

http://msdn.microsoft.com/en-us/library/dd326769(VS.85).aspx

+0

Спасибо за ссылку, Роберт. Я также ищу информацию о том, как LINQtoSQL и/или EF могут обрабатывать то, о чем говорит эта статья. – Dan

+0

Создание классов в Linq to SQL или EF - это просто перетаскивание таблиц в конструктор Linq to SQL из Server Explorer. Между классами автоматически устанавливается связь один к одному. В вашем коде ссылка должна быть доступна следующим образом: 'MyEvent.EventType1.EventType1_Field' –

+0

Скажем, я отказываюсь от ссылки 1: 1 и имею одну большую таблицу. Имеет ли смысл разбить таблицу на отдельные подтипы/классы LINQ? Я привожу это, так как есть некоторые свойства, которые существуют, возможно, в 1/2 подтипа - так что у меня возникает соблазн просто иметь одну большую таблицу базы данных, но иметь несколько классов в моем слое данных - возможно или возможно? Большое спасибо за вклад, Роберт :) – Dan

Смежные вопросы