powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF 5 - Как увеличить значение одного поля?
25 сообщений из 97, страница 3 из 4
EF 5 - Как увеличить значение одного поля?
    #38269321
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменение типа поля на nullable у класса может привести к тому, что генераторы интерфейсов, использующие этот признак для подсвечивания обязательных полей и валидации данных на клиенте, перестанут считать поле обязательном, но эта проблема легко решается — модель теперь знает про default и наличие default == обязательное поле (default+nullable в базе игнорируем же, как будто нет дефолта). Это одна строка, не 300 конструкторов.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269326
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может можно по аналогии с Nullable(Of T) сделать DBDefault(Of T). И DBDefaultNullable(Of T) для ценителей тонких извращений. При наличии во время инсерта null в DBDefault, исключать поле из вставки. И волки сыты и овцы целы.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269351
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

То есть ошибки не будет если я сделаю поля не nullable как того требует бизнесс логика?) В этом случае ССЗБ как раз таки вы со своими "всё nullable" полями))) Потому что в нормальном случае, если поля будут nullable - они будут допускать null в базе и проблем не будет )

AntonariyА с другой стороны мне не надо писать триста сраных конструкторов. Или триста сраных вьюшек, в которых отфильтрованы default-поля. И скакать с субд на субд не надо. Хочу галку! :)

Хотите галку - вам вооот сюда: http://entityframework.codeplex.com/ :)

И так вы ССЗБ, сначала создали базу, не думая о применении EF, а теперь со всей этой фигней пытаетесь взлететь )
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269393
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchAntonariy,

То есть ошибки не будет если я сделаю поля не nullable как того требует бизнесс логика?)Ошибка будет, как того требует бизнес-логика, и с теми же последствиями, но немного в другом месте программного кода.
Иди лекарств прими и научись читать и понимать прочитанное.

LelouchИ так вы ССЗБ, сначала создали базу, не думая о применении EF, а теперь со всей этой фигней пытаетесь взлететь )Когда создавалась база, дотнета еще в природе не было.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269402
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchХотите галку - вам вооот сюда: http://entityframework.codeplex.com/ :)Слишком дохрена сорцов, мне никто не оплатит потраченное на их раскуривание время.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269472
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМСУВ сферическом ORM это как кобыле пятое колесо.Поправил.
Ничего нового.
Поясни. Я говорю о EF в частности.

P.S. Все твои феерические выкрутасы с null и default(T) - бред сивой кобылы. Похоже на игру "угадай-ка", не более того.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269632
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyпропущено...
Поправил.
Ничего нового.
Поясни. Я говорю о EF в частности.В сферическом — в смысле оторванном от конкретной базы, конкретного проекта, конкретной внутренней архитектуры. Документированной.

Поэтому
МСУP.S. Все твои феерические выкрутасы с null и default(T) - бред сивой кобылы. Похоже на игру "угадай-ка", не более того.не убедительно. До сих пор я не увидел ни одного вменяемого аргумента, почему это бред или безобразие, не увидел указаний на проколы в логике выкрутасов. Видел попытки ее переврать, это да. Я привел пример сценария, с которым работаю сам, и показал, как это на нем отразятся изменения. Поэтому без указаний на его слабые места или примеров на других сценариях — до свидания.

Смена не nullable на nullable(t) отражается на клиентской логике, умеющей пользоваться этим атрибутом , но не на модели. На не умеющей не отражается вообще. Для меня ерунда, но всякие истерички уже, не вдаваясь в детали, приготовились падать в обморок, поэтому забудем этот вариант ради их здоровья.

Смена не nullable на default(t) совсем другое дело. Поведение default(t) строго определено:
1) можно присваивать null полю объекта,
2) исключается null при инсерте,
3) генерируется null exeption при апдейте

Это не замена одной обработанной ситуации другой обработанной (if(nullable){}else{}, это единственное место и есть страшная угадайка) с теоретическим (практически такая ситуация может возникнуть лишь целенаправленно, но не случайно) нарушением логики, а введение новой, имеющей известное поведение, и обработку которой нужно обдуманно ввести. Но даже из такой шляпы может выскочить пасхальный кролик: обработчик, написанный в виде if nullable else даже не надо менять! Мы не рассматриваем ситуацию, когда поле в бд имеет и null и default — в этом случае просто nullable, как сейчас. Следовательно, default(t) на клиенте ведeт себя точно так же как не nullable(t), то есть else, и ничего по этому поводу делать вообще не надо. На сервере же нельзя будет словить null exception при десериализации, но оно будет сгенерено фреймворком, если тот заметит попытку выполнить операцию апдейта базы default-полем, имеющим null. Требования модели выполняются целиком и полностью, нет ни одной угадайки.

Итого: смена не nullable на default(t) в идеальной ситуации не отражается на коде разработчика ни на клиенте ни на сервере, в не идеальной требует мизерной доработки клиентской части, что не сопоставимо с тремястами конструкторами. В остальном разница проявляется лишь в том, в каком месте будет null exeption: в коде разработчика при десериализации или в коде фреймворка при попытке апдейта бд.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269685
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, мне лень читать твою генерацию потока сознания. Всё, что касается логики в БД, я уже сказал.

Есть два пути:
1. не использовать сиквельные дефолты, а честно инициализировать модель
2. пытатсья поиметь слона через хобот, ввинчивая всяческие дополнительные условия на основе null, на основе default(T) или на основе лунных затмений

Мне фиолетово, как это сделаешь ты и как это сделает топикстартер. Лично я иду по пути наименьшего сопротивления, чего и всем желаю.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269715
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, если уж говорить о дефолтах, то самый правильный вариант решения задачи был бы в виде связки атрибута с дефолтным значением и INotifyPropertyChanged, который мог бы ответить на вопрос, было ли изменено свойство. Если оно не было изменено, то EF транслятор брал бы значение из атрибута. Но такая логика не реализована в EF.

А твои выкрутасы с null и default<T> - бред, который даже не поддается даже осмыслению. Ты только начал изучение ORM, так что не нужно тут отжигать. Завязка на null и default<T> через конструктор - абсолютный бред, т.к. можно создать класс без вызова конструктора. Поэтому, всё это педали к корове. Хочешь ездить на таком транспортном средстве? На здоровье.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269716
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУможно создать экземпляр класса без вызова конструктора
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269770
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariy, если уж говорить о дефолтах, то самый правильный вариант решения задачи был бы в виде связки атрибута с дефолтным значением и INotifyPropertyChanged, который мог бы ответить на вопрос, было ли изменено свойство. Если оно не было изменено, то EF транслятор брал бы значение из атрибута. Но такая логика не реализована в EF.Да не нужно EF ничего знать о значении дефолта, и ни с чем связывать и брать его ниоткуда не надо. Все это лишнее. Надо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу.

МСУЗавязка на null и default<T> через конструктор - абсолютный бред,Это твой бред и у него есть причина:МСУAntonariy, мне лень читать твою генерацию потока сознания.

Я по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269780
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЯ по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах.
ЕФ крут !
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269787
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAntonariyЯ по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах.
ЕФ крут !Да! Но может быть еще круче :)
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269817
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДа не нужно EF ничего знать о значении дефолта, и ни с чем связывать и брать его ниоткуда не надо. Все это лишнее. Надо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу.И базе ничего знать о дефолтах не надо. О них должен знать слой бизнес-логики.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class MyBuisnessLogicService
{
    MyEntity CreateNewMyEntity()
    {
        return new MyEntity
        {
             Value1 = 1,
             Value2 = "21",
             Value3 = true
        };
    }
}



зы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам...
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269821
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosЕФ крут !Да.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269839
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИ базе ничего знать о дефолтах не надо. О них должен знать слой бизнес-логики.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class MyBuisnessLogicService
{
    MyEntity CreateNewMyEntity()
    {
        return new MyEntity
        {
             Value1 = 1,
             Value2 = "21",
             Value3 = true
        };
    }
}



зы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам...
прально это надо в другом месте
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269844
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAntonariyДа не нужно EF ничего знать о значении дефолта, и ни с чем связывать и брать его ниоткуда не надо. Все это лишнее. Надо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу.И базе ничего знать о дефолтах не надо.Вашей базе не надо, моей надо. На этом и разойдемся с помощью галки в мастере.

Алексей Кзы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам...Так как я только начал изучение ORM, мне это не понятно. Можете просветить?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269851
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosпрально это надо в другом местеЭто что за место? Ничего знакомого на скриншоте.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269859
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyViPRosпрально это надо в другом местеЭто что за место? Ничего знакомого на скриншоте.
место, где описывается предметная область - модель
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269863
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДа не нужно EF ничего знать о значении дефолта
Правильно, не надо, об этом я и говорю. Это должен знать только тот, кто инициализует модель. То есть логика. Ни EF, ни БД, а логика.

AntonariyНадо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу.
Размазывать логику в сервисном слое и базе? Вперёд, гавнокодь дальше, мы не против.

AntonariyЭто твой бред и у него есть причина
Ты всё перепутал. Это ты тут у нас начал генерить какие-то феерические условия со свистоплясками, тут играем а тут не играем. Хочешь об этом поговорить? Вперед, пиши свой ORM движок, а мы посмеемся.

AntonariyЯ по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах.
Тебе битый час люди объясняют, что твои глупые фантазии с нулейблами и дефолтами - бред. Ты сам всех запутал.

AntonariyВашей базе не надо, моей надо. На этом и разойдемся с помощью галки в мастере.
Надо, пиши хранимки, которые нативно будут поддерживать дефолты при вставке в таблицу. Я писал это с самого начала. К чему ты тут глупый флуд на ровном месте развел, не понятно.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269865
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAntonariyпропущено...
Это что за место? Ничего знакомого на скриншоте.
место, где описывается предметная область - модель
Сахават, кончай жечь!
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269870
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей Кпропущено...
И базе ничего знать о дефолтах не надо.Вашей базе не надо, моей надо. На этом и разойдемся с помощью галки в мастере.Да я и не навязываю. Это просто моё мнение. :-)

AntonariyАлексей Кзы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам...Так как я только начал изучение ORM, мне это не понятно. Можете просветить?Конструктор вызывается всегда. В том числе и в случае создания объекта в результате выполнения LINQ-запроса. Не думаю, что Вы этого хотите. :-)
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269872
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAntonariyпропущено...
Это что за место? Ничего знакомого на скриншоте.
место, где описывается предметная область - модель"Ну экран, ну кнопки, а говорить-то куда?" (б)
Где физически хранятся значения дефолтов? Поддерживаются ли формулы?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269879
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAntonariyпропущено...
Это что за место? Ничего знакомого на скриншоте.
место, где описывается предметная область - модельА если дефолтное значение должно вычисляться в момент добавления записи. Всё, приплыли?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269885
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККонструктор вызывается всегда. В том числе и в случае создания объекта в результате выполнения LINQ-запроса.Да, в этом случае последствия далеко идут. Побежал переписывать.
...
Рейтинг: 0 / 0
25 сообщений из 97, страница 3 из 4
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF 5 - Как увеличить значение одного поля?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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