Хранение и логическая модель в Entity Framework - PullRequest
1 голос
/ 05 октября 2010

Может ли кто-нибудь что-нибудь прояснить для меня? Насколько я понимаю, физическая модель описывает, как данные представляются в контексте определенного носителя данных. Логическая модель - это представление в терминах сущностей и отношений, независимо от какой-либо конкретной технологии управления данными. Как эти два работают с Entity Framework? Я предполагаю, что EF работает против логической модели. В каком случае, куда вписывается физическая модель?

Ответы [ 2 ]

1 голос
/ 05 октября 2010

В EDM (модель данных объекта) первый представлен Язык определения схемы хранилища (SSDL) второй - Язык определения концептуальной схемы (CSDL) . Но есть и третий игрок в этой игре: Язык спецификаций картографирования (MSL) .
В метаданных Entity Framework слой отображения расположен между концептуальным и хранилищным слоями и предоставляет карту из свойств сущности обратно в таблицы и столбцы в хранилище данных.
EF, как ORM, работает со всеми тремя. Код разработчика соответствует Концептуальной модели, а EF отображает ее обратно в модель хранения с использованием MSL.

0 голосов
/ 25 мая 2011

Говоря о реляционных базах данных, логическая модель - это база данных, представленная в терминах отношений (или таблиц), значений, ключей и ограничений целостности, таких как отношения внешнего ключа. Модель физическая показывает, как эти данные на самом деле хранятся в виде структур данных в файлах или в памяти. Различные системы реляционных баз данных могут представлять одну и ту же логическую модель, но физическая модель будет специфичной для системы и оптимизированной для различных целей. Логико-физическое отображение не обязательно должно быть 1: 1, в некоторых случаях одна логическая таблица может быть физически разделена на несколько файлов или даже несколько машин, или логическое объединение может храниться (кэшироваться) как одна физическая таблица. Это должно быть прозрачно на логическом уровне, но влияет на производительность.

SQL работает на логическом уровне, поскольку вы запрашиваете таблицы одинаково, независимо от физического представления. Некоторые диалекты SQL могут поддерживать советы по оптимизации на основе характеристик физической модели.

Следовательно, в Entity Framework то, что называется моделью хранения , на самом деле является логической моделью базы данных, поскольку модель хранения EF не зависит от какой-либо конкретной реализации базы данных. Физическая модель базы данных вообще не представлена ​​в EF, AFAIK.

EF затем строит еще один слой поверх этого, который EF называет концептуальной моделью . Концептуальная модель обычно более специфична для конкретного приложения. Различные приложения в одной и той же базе данных могут иметь разные концептуальные модели, основанные на общей логической модели. (Кстати. Модель хранения в EF не должна представлять всю логическую модель БД, она может быть подмножеством. Но включенное подмножество должно отображать 1: 1 в логическую модель БД)

...