Entity Framework с разработкой Sql-first - PullRequest
0 голосов
/ 17 февраля 2011

Я собираюсь разработать большую базу данных для моей компании.Эта база данных будет основным элементом для будущих продуктов.Моей первой мыслью было использование EF 4 для создания красивой, объектно-ориентированной базы данных со встроенной концепцией наследования.Затем я прочитал много критики в отношении базы данных с мыслью об объектно-ориентированной парадигме.База данных должна быть построена на фактах, а не на объектах ( ссылка ).И прежде всего нам нужна база данных с отличной производительностью.Мне, как давнему разработчику C #, довольно сложно мыслить не с точки зрения объекта, поскольку для меня все является объектом.Не могли бы вы предложить мне статьи, книги или просто записи в блогах, чтобы вернуться в старый табличный мир баз данных, имея в виду производительность, а не «удобство использования»?Затем я хотел бы создать EF-представление из него, потому что позже мне понадобится и «удобство использования», всеобъемлющее наследование.

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Что вы должны попытаться сделать, это создать нормализованную базу данных . При правильной ссылочной целостности и индексации. Это может быть не чистый ОО, но всегда существует степень несоответствия импеданса между кодом приложения и базой данных. Такие инструменты, как структура сущностей, в значительной степени абстрагируются от вас и прекрасно справляются с базой данных, ориентированной на производительность и правильную нормализацию. Чтобы научиться делать это, нужно время, поэтому сделайте это правильно и постарайтесь понять, что означают различные формы нормализации и т. Д. 1-я форма, 2-я форма ... нормальная форма Бойса Кодда и как их реализовать.

В конце дня реляционные базы данных хранят вещи не в объектах, а в строках и столбцах. Если вы очень заинтересованы в чистой ОО от начала до конца, то, возможно, стоит проверить некоторые из баз данных ОО, хотя по моему опыту реляционные базы данных с приличным ORM и т. Д. (Entity Framework, NHibernate) работают нормально.

Entity Framework и NHibernate позволяют отображать вещи в объектные модели, которые реализуют наследование. Это не означает, что вы обязательно должны реализовать наследование в своей базе данных. Например, если у вас есть Лицо, которое может быть безработным, работающим, инвалидом. Вы бы смоделировали это через две таблицы вместо четырех. и т.д.

Person has a EmploymentStatus

instead of 

Person has a table
Unemployed has a table
Employed has a table
Disability has a table

Это не значит, что в вашем коде будет два объекта. Используя такой инструмент, как EntityFramework, вы можете указать соответствие четырем отдельным классам, которые реализуют наследование.

Я бы порекомендовал вам взглянуть на следующую статью.

Несоответствие реляционного импеданса

Нормализация базы данных

Нормализация

Как нормализовать вашу базу данных

База данных объектов

1 голос
/ 17 февраля 2011

Вам следует взглянуть на этот сайт: http://ormeter.net/ BLToolkit - это быстрая и мощная библиотека ORM. EntityFramework имеет ряд недостатков, связанных с юзабилити, например: отношения многие ко многим

...