Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Code First + SQL Triggers / 25 сообщений из 83, страница 1 из 4
29.05.2018, 10:29
    #39651570
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Доброго времени суток, уважаемые коллеги.

Вопрос такой. На сколько оправдано использование в SQL-триггеров при подходе CodeFirst (EntityFramework Core)
, при наличие вариантов, которые исключают какое-либо вмешательство в SQL сервер?
...
Рейтинг: 0 / 0
29.05.2018, 10:48
    #39651588
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabonga,
Это чисто идеология как писать.
Главное не смешивать.
Можно бд считать импотентом и хранилищем данных. Остальное делает средний слой.
Можно делать упор на бд как гарант целостности.
Если триггер без БЛ то вообще нет проблем.
...
Рейтинг: 0 / 0
29.05.2018, 10:49
    #39651592
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Petro123,

Так-то оно понятно, но интересует конкретный вопрос относительно миграции. Мешает или способствует?
...
Рейтинг: 0 / 0
29.05.2018, 10:51
    #39651594
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabonga,

миграции? Вы о чём?
...
Рейтинг: 0 / 0
29.05.2018, 10:53
    #39651596
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
skyANA,

DbMigration... CodeFirst (EntityFramework)... изменение классоа (схемы данных)...
...
Рейтинг: 0 / 0
29.05.2018, 10:57
    #39651601
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongaPetro123,

Так-то оно понятно, но интересует конкретный вопрос относительно миграции. Мешает или способствует?
Мешает).
И мое маленькое imho что MS что то поменяет.
Чтобы работали оба направления. Первична база и первичен АппСервер.
...
Рейтинг: 0 / 0
29.05.2018, 11:08
    #39651611
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongaВопрос такой. На сколько оправдано использование в SQL-триггеров при подходе CodeFirst (EntityFramework Core)
, при наличие вариантов, которые исключают какое-либо вмешательство в SQL сервер?

Абсолютно не оправдано. Что за варианты имеются в виду, можете озвучить?
...
Рейтинг: 0 / 0
29.05.2018, 11:09
    #39651613
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongaТак-то оно понятно, но интересует конкретный вопрос относительно миграции. Мешает или способствует?

Не то, чтобы мешают. Но не способствуют, это точно.
...
Рейтинг: 0 / 0
29.05.2018, 11:12
    #39651615
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongaskyANA,

DbMigration... CodeFirst (EntityFramework)... изменение классоа (схемы данных)...
It depends...

К примеру мы выкатываем новую версию только на часть серверов и включаем только части пользователей.
И какое-то время надо писать данные в оба места: новое и старое.

Тут триггер помогает.
...
Рейтинг: 0 / 0
29.05.2018, 11:13
    #39651619
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
skyANAТут триггер помогает.

Слишком частный случай, а ТС пока не озвучил свои варианты использования.
...
Рейтинг: 0 / 0
29.05.2018, 11:20
    #39651622
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Давайте я приведу конкретный пример, а за одно может чего посоветуете. Предположим, что у меня есть Computed Description свойство, мне надо хранить в нем, $"{Name} will pay you {Amount} of {CurrencyName}". При изменении в БД любого из свойств задействованных в выражении, хочется иметь "свежую" версию в свойстве Description.

Какие будут предложения?
...
Рейтинг: 0 / 0
29.05.2018, 11:24
    #39651627
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongaДавайте я приведу конкретный пример, а за одно может чего посоветуете. Предположим, что у меня есть Computed Description свойство, мне надо хранить в нем, $"{Name} will pay you {Amount} of {CurrencyName}". При изменении в БД любого из свойств задействованных в выражении, хочется иметь "свежую" версию в свойстве Description.

Какие будут предложения?

Делать это в рамках приложения. Почему? Во-первых, сегодня вам нужен {Name}, который доступен из полей записи, а завтра нужно туда добавлять, допустим, имя текущего пользователя, который из триггера будет недоступен. Во-вторых, триггеры тяжело протестировать. В-третьих, вам может быть нужно одно поведение в одном окружении, и другое в другом (dev, staging, production...).
...
Рейтинг: 0 / 0
29.05.2018, 11:25
    #39651629
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabonga,

На EF ваше Computed Description может быть легко реализовано с помощью свойства, но лучше, если это будет выполняться на уровне репозитория.
...
Рейтинг: 0 / 0
29.05.2018, 11:27
    #39651632
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabonga,

Опять же. Это всё верно до тех пор, пока верно то, что с базой данных работает только приложение, и никто ручками в базу не лезет. Если это так, то мне тут посоветовать что-то трудно. Триггеры, конечно выглядят как решение, но по личному опыту, это не так.
...
Рейтинг: 0 / 0
29.05.2018, 11:36
    #39651638
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
hVosttCalabonga,

Опять же. Это всё верно до тех пор, пока верно то, что с базой данных работает только приложение, и никто ручками в базу не лезет. Если это так, то мне тут посоветовать что-то трудно. Триггеры, конечно выглядят как решение, но по личному опыту, это не так.


В том-то и дело, и можно обойтись без триггера. Пока работает одно приложение (или несколько приложений), но работают они по одним правилам, то есть везде используется одна и та же функция формирования Description, то это всё работает. Но как только "ручками", кто-то править в БД будет, то триггер отработает, а без него Description будет "сломан"
...
Рейтинг: 0 / 0
29.05.2018, 11:44
    #39651650
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongaНо как только "ручками", кто-то править в БД будет,именно.
Бд предприятия это не твоя собственность.
Либо делаете большой АппСервер и все ходят через него, либо...
...
Рейтинг: 0 / 0
29.05.2018, 11:47
    #39651653
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Petro123,


Я понял, спасибо всем. В общем-то, вы подтвердили мои предположения.
...
Рейтинг: 0 / 0
29.05.2018, 11:48
    #39651656
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongaВ том-то и дело, и можно обойтись без триггера. Пока работает одно приложение (или несколько приложений), но работают они по одним правилам, то есть везде используется одна и та же функция формирования Description, то это всё работает. Но как только "ручками", кто-то править в БД будет, то триггер отработает, а без него Description будет "сломан"

Поэтому с базой должно работать одно приложение, а другие работать с данными через него. Это называется трёх-звенка .
...
Рейтинг: 0 / 0
30.05.2018, 05:28
    #39652153
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
hVosttCalabongaВ том-то и дело, и можно обойтись без триггера. Пока работает одно приложение (или несколько приложений), но работают они по одним правилам, то есть везде используется одна и та же функция формирования Description, то это всё работает. Но как только "ручками", кто-то править в БД будет, то триггер отработает, а без него Description будет "сломан"

Поэтому с базой должно работать одно приложение, а другие работать с данными через него. Это называется трёх-звенка .
Другими словами, это BLL должен быть реализован отдельно от БД через какой-то уровень абстракции, например через паттерн Repository. Так?
...
Рейтинг: 0 / 0
30.05.2018, 07:31
    #39652174
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabongaпаттерн Repositoryдался вам этот паттерн.
Люди не любящие бд давно придумали слово интерцептор вмест слова триггер.
Ну, еще иногда эвент, сбытие, листенер.
Так что DbInterception должно тебя устроить.
По хорошему надо уметь писать и так и так.
...
Рейтинг: 0 / 0
30.05.2018, 07:33
    #39652175
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabongaэто BLL должен быть реализованв сервисном слое
...
Рейтинг: 0 / 0
30.05.2018, 07:39
    #39652176
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Petro123,


Странный комментарий, а особенно про "писать и так и так". К чему это? Писать с использованием древнего подхода (двух-звенка) и более продвинутого (трех-звенка)... А зачем писать по-старому? Какой от этого профит?

А про людей, которые не любят БД, вообще не понял. Таких "выдумывающих" дохреналионы, а паттерн один, и какая разниница как они его называют? Главное, на мой взгляд, чтобы люди понимали что говорят их аппоненты. А как ты паттерн Repository назовёшь - уже рояля не играет.
...
Рейтинг: 0 / 0
30.05.2018, 07:59
    #39652181
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabonga,
Ты собрался сайты клепать или кровавый энтерпрайз?
Вот, в кровавом, надо знать триггеры, хп, нормализацию, маппинг...
Хотя конечно мы в ветке трех звенки.
Так что про старье ты зря.
Стареют инструменты, а архитектура почти нет.
Про паттерн не понял. Назвать их по другому нельзя. Их имена это словарь и константы. Это зубрить.
...
Рейтинг: 0 / 0
30.05.2018, 08:03
    #39652182
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
CalabongahVosttпропущено...


Поэтому с базой должно работать одно приложение, а другие работать с данными через него. Это называется трёх-звенка .
Другими словами, это BLL должен быть реализован отдельно от БД через какой-то уровень абстракции, например через паттерн Repository. Так?
Ага, это типовой подход.



А ещё есть CQRS с одной БД и без Event Sourcing
...
Рейтинг: 0 / 0
30.05.2018, 08:04
    #39652184
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Code First + SQL Triggers
Calabonga,
Или коротко по сабжу - триггеры это не старьё! Даже если появились интерцепторы.)
Ферштеен?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Code First + SQL Triggers / 25 сообщений из 83, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]