Сведения о вопросе

Fedya

18:22, 21st August, 2020

Теги

Лучшее решение .NET для часто изменяемой базы данных

Просмотров: 501   Ответов: 12

В настоящее время я разрабатываю небольшое приложение CRUD. Их база данных-это огромный беспорядок и будет часто меняться в течение следующих 6 месяцев до года. Что бы вы порекомендовали для моего слоя данных:

1) ORM (если да, то какой?)

2) Linq2Sql

3) Хранимые Процедуры

4) Параметризованные Запросы

Мне действительно нужно решение, которое будет достаточно динамичным (как быстрым, так и легким), где я могу часто заменять таблицы и добавлять/удалять столбцы.

Примечание: у меня нет большого опыта работы с ORM (только немного SubSonic) и, как правило, используют хранимые процедуры, поэтому, возможно, это будет путь. Я хотел бы узнать Ling2Sql или NHibernate, если бы это позволяло ситуацию, которую я описал выше.



  Сведения об ответе

screen

21:10, 7th August, 2020

Здесь важно помнить, что если схема базы данных часто меняется, вы хотите иметь некоторый уровень безопасности типа времени компиляции. Я обнаружил, что это проблема с NHibernate, потому что он использует файлы сопоставления xml, поэтому, если вы что-то изменяете в своей схеме базы данных, вы не знаете до времени выполнения, что сопоставление нарушено.

Это также будет проблемой с сохраненными процессами.

Использование Linq2Sql даст вам преимущество, зная, где именно ваш код ломается при изменении схемы во время компиляции. Это для меня, это то, что будет иметь приоритет над всем остальным, если я работаю с часто меняющейся схемой


  Сведения об ответе

piter

19:46, 3rd August, 2020

Я бы посмотрел на SubSonic с настройкой поставщика сборки (проект веб-сайта). Это отлично работает, потому что он автоматически восстанавливает объекты DAL каждый раз, когда вы строите свой проект, поэтому, если база данных изменяется таким образом, что ломает ваш код, вы получаете ошибку сборки.

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


  Сведения об ответе

SSESION

23:14, 21st August, 2020

Вы определенно хотите использовать ORM. Любой ORM-это нормально, но вы хотите что-то, что будет генерировать строго типизированные классы. Когда поля добавляются, изменяются или удаляются из таблицы, вы хотите иметь возможность регенерировать эти классы и иметь дело только с исправлением ошибок времени компиляции. Если вы используете динамическую модель, вы, вероятно, будете иметь много неприятных ошибок во время выполнения. Это VERY важно! Я являюсь частью команды разработчиков MyGeneration на sourceforge, и я думаю, что это отличное решение вашей проблемы. Вы можете создать dOOdads, NHibernate, EasyObjects, EntitySpaces и т.д. Если вы хотите пойти с более дорогим решением, идите с CodeSmith или LLBLGen Pro . Удачи-все, кто заинтересован в использовании MyGeneration, не стесняйтесь обращаться ко мне с вопросами.


  Сведения об ответе

+-*/

15:20, 25th August, 2020

Используйте EntitySpaces. вы обязательно пришлете мне цветы. просто потрясающе. измените БД, как вам нравится. нажми на кнопку, бац. все ваши изменения сделаны. без изменения пользовательского кода. Я люблю это.


  Сведения об ответе

SKY

23:34, 13th August, 2020

Насколько просто приложение? Если бы я работал со схемой / дизайном в течение нескольких месяцев, и не очень беспокоился о реальном приложении . . . Я бы рассмотрел использование EDM и проекта веб-приложения динамических сущностей данных. Это заставит вас идти с наименьшим количеством усилий, на мой взгляд. Это позволяет вам сосредоточиться на схеме, данных и других интересных вещах. Я надеюсь, что не получу слишком много отрицательных ударов от этого!

Вот как будет выглядеть диалоговое окно нового проекта


  Сведения об ответе

DINO

09:33, 17th August, 2020

EntitySpaces может восстановить ваш уровень DAL/Business за одну минуту, и без потери кода, см. пробную версию ==> HERE

Нет необходимости регистрации, работает в Visual студии.


  Сведения об ответе

dumai

01:25, 14th August, 2020

Если бы я был на вашем месте, я бы попытался использовать то, что я знал (sprocs) с Linq2Sql. Linq2Sql все еще может использовать ваши sprocs, но тогда у вас есть дополнительный бонус в виде нового инструмента в вашем поясе. Я думаю, что понимание синтаксиса и методологии Linq2XXX (X является случайной технологией, а не взрослой entertainment....which, теперь, когда я думаю об этом) будет отличным дополнением к вашему набору навыков, используя Linq над коллекцией объектов, это очень мило.

Но в конечном счете что-то вроде NHibernate подойдет вам лучше в долгосрочной перспективе.


  Сведения об ответе

PROGA

01:45, 18th August, 2020

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

Для выполнения этого наоборот (например, у вас есть куча таблиц, а затем вы основываете свой объектный дизайн на этом) я нашел MyGeneration + NHibernate для работы, хотя я не слишком доволен полученными классами (главным образом потому, что я такой сторонник истинного объектно-ориентированного программирования).


  Сведения об ответе

SSESION

08:46, 1st August, 2020

Вы уже довольны сохраненными процессами, и их может быть достаточно, чтобы абстрагироваться от изменяющейся схемы. Если ORMs не довольны сохраненными процессами, то, возможно, они будут работать с представлениями, которые вы держите в курсе поверх изменяющейся схемы.


  Сведения об ответе

DINO

13:53, 20th August, 2020

Если схема базы данных часто меняется, предпочтите Entity Framework по сравнению с LINQ2SQL. Если схема изменяется, используя L2S, вы должны
1) удаление и повторное добавление таблицы (потеря настроек)
2) Измените модель вручную (как сделано здесь в stackoverflow)

EF-это супер-набор L2S, дающий вам большую гибкость использования и независимость от СУБД


  Сведения об ответе

P_S_S

20:16, 11th August, 2020

посмотрите, почему он меняется, и посмотрите, можете ли вы предвидеть и обобщить виды изменений, которые приходят к вам, чтобы они не нарушали ваш код

структура может облегчить адаптацию изменений, но более глубокий анализ будет иметь более долгосрочную выгоду


  Сведения об ответе

Chhiki

09:56, 28th August, 2020

Любое решение может работать, то, что вам действительно нужно, - это набор тестов, которые гарантируют, что основные операции, такие как вставка, выбор, обновление и удаление, работают. Таким образом, вы можете просто запустить свои тесты и проверить, являются ли сопоставления up-to-date.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться