Мы создали базу данных на SQL Server, используя два шаблона, которые мы нашли в книге ресурсов ресурсов модели данных Len Silverston. 3, один для типов и категорий: классификация и другой для иерархий, агрегирования и одноранговых отношений. По существу, она implmented следующим образом:Изучение схемы набора данных на основе данных во время выполнения
Классификация
[Объект] (М х М) [EntityType] (М х М) [EntityTypeType]
..., где (М х M) является отношением «многие ко многим», реализованным в базе данных по таблице классификации.
Ассоциация
Сущность и таблицы типа выше, также имеют свои собственные типизированных Rollups:
- [Entity] (М х М) [Entity]
- [EntityType] (М х М) [EntityType]
- [EntityTypeType] (М х М) [EntityTypeType]
... где каждый (M x M) является отношением «многие ко многим», реализованным в таблице Rollup с внешним ключом типа типа rollup/association.
Результирующая структура данных дает нам огромную выразительную способность с точки зрения описания как наших сущностей, так и их отношений друг с другом. Однако у нас возникают проблемы с использованием этой выразительности в наших приложениях. Основная проблема заключается в том, что, несмотря на успехи в EF 5, отношения M-2-M все еще сложны, и помимо этого мы пытаемся получить доступ к M-2-M по меньшей мере в 2 направлениях, когда мы попадаем в базу данных , Это особенно усложняется:
- Мы подтип как [Entity], так и некоторые подтипы [Entity].
- Все таблицы M2M - все таблицы классификации и свертывания/ассоциации - имеют полезную нагрузку, содержащую по крайней мере дату From и Thru. Накопители также содержат, по крайней мере, тип накопителя.
- Мы не хотим загружать большие отдаленные части схемы ввода (таблицы EntityTypeType и их свертывания), чтобы интерпретировать данные во время выполнения каждый раз, когда мы обращаемся к объектам.
Technologies:
- SQL Server 2008 R2
- Entity Framework 5
- .NET 4.5
- MVC 4 (в части веб-приложения, мы также имеем некоторые консольные приложения)
Вопросы о самой модели:
- Является ли это просто невыполнимой моделью данных в .NET?
- Должны ли мы сначала свернуть нашу базу данных на более дружественные .NET-представления, которые по существу моделируют наши бизнес-объекты?
Вопросы о схеме набрав - иметь в виду, что типы являются довольно статичным:
- Если мы эшафот в [EntityType] и [EntityTypeType] таблицы, их классификации, а также их накопительные INTO C# классы? Это будет схоже с enum scaffolders, только нам нужно больше, чем имя/int, поскольку у них есть диапазон дат и полезных данных. Если да, то каковы некоторые идеи о том, как замаскировать эти файлы - как статические классы? Жестко-кодированные списки объектов?
- Следует ли нам кэшировать схему ввода при запуске (это беспокоит меня, потому что она добавляет много накладных расходов для запуска приложений консоли)?
- Любые другие идеи - строительные леса XML-файлов? и т.д. ...
Любые идеи или впечатления очень ценятся!
Так вы пытаетесь динамически интерпретировать базу данных во время выполнения? Например, предположим, что у вас есть объект User. Пользователь имеет 10 полей. Вы хотите добавить 11-е поле и не обновлять код? Код должен динамически видеть 11-е поле и действовать соответственно? То же самое с отношениями и т. Д.? – ryan1234
Нет, просто у нас сложная схема ввода текста и мы хотим, чтобы все это было доступно во время выполнения. База данных не нуждается в физическом изменении. – fordareh
Дизайн стоимости сущности является наихудшим из всех миров, если вы знаете, какие поля вам нужны. Это плохой префитер и сложнее запросить. Я хочу, чтобы эта база данных использовала правильную модель, а не эту беспорядок. – HLGEM