|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Доброго времени суток, уважаемые коллеги. Вопрос такой. На сколько оправдано использование в SQL-триггеров при подходе CodeFirst (EntityFramework Core) , при наличие вариантов, которые исключают какое-либо вмешательство в SQL сервер? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 10:29 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabonga, Это чисто идеология как писать. Главное не смешивать. Можно бд считать импотентом и хранилищем данных. Остальное делает средний слой. Можно делать упор на бд как гарант целостности. Если триггер без БЛ то вообще нет проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 10:48 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Petro123, Так-то оно понятно, но интересует конкретный вопрос относительно миграции. Мешает или способствует? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 10:49 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabonga, миграции? Вы о чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 10:51 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANA, DbMigration... CodeFirst (EntityFramework)... изменение классоа (схемы данных)... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 10:53 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaPetro123, Так-то оно понятно, но интересует конкретный вопрос относительно миграции. Мешает или способствует? Мешает). И мое маленькое imho что MS что то поменяет. Чтобы работали оба направления. Первична база и первичен АппСервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 10:57 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaВопрос такой. На сколько оправдано использование в SQL-триггеров при подходе CodeFirst (EntityFramework Core) , при наличие вариантов, которые исключают какое-либо вмешательство в SQL сервер? Абсолютно не оправдано. Что за варианты имеются в виду, можете озвучить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:08 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaТак-то оно понятно, но интересует конкретный вопрос относительно миграции. Мешает или способствует? Не то, чтобы мешают. Но не способствуют, это точно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:09 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaskyANA, DbMigration... CodeFirst (EntityFramework)... изменение классоа (схемы данных)... It depends... К примеру мы выкатываем новую версию только на часть серверов и включаем только части пользователей. И какое-то время надо писать данные в оба места: новое и старое. Тут триггер помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:12 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
skyANAТут триггер помогает. Слишком частный случай, а ТС пока не озвучил свои варианты использования. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:13 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Давайте я приведу конкретный пример, а за одно может чего посоветуете. Предположим, что у меня есть Computed Description свойство, мне надо хранить в нем, $"{Name} will pay you {Amount} of {CurrencyName}". При изменении в БД любого из свойств задействованных в выражении, хочется иметь "свежую" версию в свойстве Description. Какие будут предложения? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:20 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaДавайте я приведу конкретный пример, а за одно может чего посоветуете. Предположим, что у меня есть Computed Description свойство, мне надо хранить в нем, $"{Name} will pay you {Amount} of {CurrencyName}". При изменении в БД любого из свойств задействованных в выражении, хочется иметь "свежую" версию в свойстве Description. Какие будут предложения? Делать это в рамках приложения. Почему? Во-первых, сегодня вам нужен {Name}, который доступен из полей записи, а завтра нужно туда добавлять, допустим, имя текущего пользователя, который из триггера будет недоступен. Во-вторых, триггеры тяжело протестировать. В-третьих, вам может быть нужно одно поведение в одном окружении, и другое в другом (dev, staging, production...). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:24 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabonga, На EF ваше Computed Description может быть легко реализовано с помощью свойства, но лучше, если это будет выполняться на уровне репозитория. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:25 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabonga, Опять же. Это всё верно до тех пор, пока верно то, что с базой данных работает только приложение, и никто ручками в базу не лезет. Если это так, то мне тут посоветовать что-то трудно. Триггеры, конечно выглядят как решение, но по личному опыту, это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:27 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
hVosttCalabonga, Опять же. Это всё верно до тех пор, пока верно то, что с базой данных работает только приложение, и никто ручками в базу не лезет. Если это так, то мне тут посоветовать что-то трудно. Триггеры, конечно выглядят как решение, но по личному опыту, это не так. В том-то и дело, и можно обойтись без триггера. Пока работает одно приложение (или несколько приложений), но работают они по одним правилам, то есть везде используется одна и та же функция формирования Description, то это всё работает. Но как только "ручками", кто-то править в БД будет, то триггер отработает, а без него Description будет "сломан" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:36 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaНо как только "ручками", кто-то править в БД будет,именно. Бд предприятия это не твоя собственность. Либо делаете большой АппСервер и все ходят через него, либо... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:44 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Petro123, Я понял, спасибо всем. В общем-то, вы подтвердили мои предположения. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:47 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongaВ том-то и дело, и можно обойтись без триггера. Пока работает одно приложение (или несколько приложений), но работают они по одним правилам, то есть везде используется одна и та же функция формирования Description, то это всё работает. Но как только "ручками", кто-то править в БД будет, то триггер отработает, а без него Description будет "сломан" Поэтому с базой должно работать одно приложение, а другие работать с данными через него. Это называется трёх-звенка . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 11:48 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
hVosttCalabongaВ том-то и дело, и можно обойтись без триггера. Пока работает одно приложение (или несколько приложений), но работают они по одним правилам, то есть везде используется одна и та же функция формирования Description, то это всё работает. Но как только "ручками", кто-то править в БД будет, то триггер отработает, а без него Description будет "сломан" Поэтому с базой должно работать одно приложение, а другие работать с данными через него. Это называется трёх-звенка . Другими словами, это BLL должен быть реализован отдельно от БД через какой-то уровень абстракции, например через паттерн Repository. Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 05:28 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabongaпаттерн Repositoryдался вам этот паттерн. Люди не любящие бд давно придумали слово интерцептор вмест слова триггер. Ну, еще иногда эвент, сбытие, листенер. Так что DbInterception должно тебя устроить. По хорошему надо уметь писать и так и так. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 07:31 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabongaэто BLL должен быть реализованв сервисном слое ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 07:33 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Petro123, Странный комментарий, а особенно про "писать и так и так". К чему это? Писать с использованием древнего подхода (двух-звенка) и более продвинутого (трех-звенка)... А зачем писать по-старому? Какой от этого профит? А про людей, которые не любят БД, вообще не понял. Таких "выдумывающих" дохреналионы, а паттерн один, и какая разниница как они его называют? Главное, на мой взгляд, чтобы люди понимали что говорят их аппоненты. А как ты паттерн Repository назовёшь - уже рояля не играет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 07:39 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
Calabonga, Ты собрался сайты клепать или кровавый энтерпрайз? Вот, в кровавом, надо знать триггеры, хп, нормализацию, маппинг... Хотя конечно мы в ветке трех звенки. Так что про старье ты зря. Стареют инструменты, а архитектура почти нет. Про паттерн не понял. Назвать их по другому нельзя. Их имена это словарь и константы. Это зубрить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 07:59 |
|
Code First + SQL Triggers
|
|||
---|---|---|---|
#18+
CalabongahVosttпропущено... Поэтому с базой должно работать одно приложение, а другие работать с данными через него. Это называется трёх-звенка . Другими словами, это BLL должен быть реализован отдельно от БД через какой-то уровень абстракции, например через паттерн Repository. Так? Ага, это типовой подход. А ещё есть CQRS с одной БД и без Event Sourcing ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 08:03 |
|
|
start [/forum/topic.php?fid=18&msg=39651592&tid=1355206]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 157ms |
0 / 0 |