|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
Изменение типа поля на nullable у класса может привести к тому, что генераторы интерфейсов, использующие этот признак для подсвечивания обязательных полей и валидации данных на клиенте, перестанут считать поле обязательном, но эта проблема легко решается — модель теперь знает про default и наличие default == обязательное поле (default+nullable в базе игнорируем же, как будто нет дефолта). Это одна строка, не 300 конструкторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 02:04 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
А может можно по аналогии с Nullable(Of T) сделать DBDefault(Of T). И DBDefaultNullable(Of T) для ценителей тонких извращений. При наличии во время инсерта null в DBDefault, исключать поле из вставки. И волки сыты и овцы целы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 02:15 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
Antonariy, То есть ошибки не будет если я сделаю поля не nullable как того требует бизнесс логика?) В этом случае ССЗБ как раз таки вы со своими "всё nullable" полями))) Потому что в нормальном случае, если поля будут nullable - они будут допускать null в базе и проблем не будет ) AntonariyА с другой стороны мне не надо писать триста сраных конструкторов. Или триста сраных вьюшек, в которых отфильтрованы default-поля. И скакать с субд на субд не надо. Хочу галку! :) Хотите галку - вам вооот сюда: http://entityframework.codeplex.com/ :) И так вы ССЗБ, сначала создали базу, не думая о применении EF, а теперь со всей этой фигней пытаетесь взлететь ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 04:56 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
LelouchAntonariy, То есть ошибки не будет если я сделаю поля не nullable как того требует бизнесс логика?)Ошибка будет, как того требует бизнес-логика, и с теми же последствиями, но немного в другом месте программного кода. Иди лекарств прими и научись читать и понимать прочитанное. LelouchИ так вы ССЗБ, сначала создали базу, не думая о применении EF, а теперь со всей этой фигней пытаетесь взлететь )Когда создавалась база, дотнета еще в природе не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 07:57 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
LelouchХотите галку - вам вооот сюда: http://entityframework.codeplex.com/ :)Слишком дохрена сорцов, мне никто не оплатит потраченное на их раскуривание время. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 08:09 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
AntonariyМСУВ сферическом ORM это как кобыле пятое колесо.Поправил. Ничего нового. Поясни. Я говорю о EF в частности. P.S. Все твои феерические выкрутасы с null и default(T) - бред сивой кобылы. Похоже на игру "угадай-ка", не более того. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 09:25 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
МСУ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: в коде разработчика при десериализации или в коде фреймворка при попытке апдейта бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 11:11 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
Antonariy, мне лень читать твою генерацию потока сознания. Всё, что касается логики в БД, я уже сказал. Есть два пути: 1. не использовать сиквельные дефолты, а честно инициализировать модель 2. пытатсья поиметь слона через хобот, ввинчивая всяческие дополнительные условия на основе null, на основе default(T) или на основе лунных затмений Мне фиолетово, как это сделаешь ты и как это сделает топикстартер. Лично я иду по пути наименьшего сопротивления, чего и всем желаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 11:34 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
Antonariy, если уж говорить о дефолтах, то самый правильный вариант решения задачи был бы в виде связки атрибута с дефолтным значением и INotifyPropertyChanged, который мог бы ответить на вопрос, было ли изменено свойство. Если оно не было изменено, то EF транслятор брал бы значение из атрибута. Но такая логика не реализована в EF. А твои выкрутасы с null и default<T> - бред, который даже не поддается даже осмыслению. Ты только начал изучение ORM, так что не нужно тут отжигать. Завязка на null и default<T> через конструктор - абсолютный бред, т.к. можно создать класс без вызова конструктора. Поэтому, всё это педали к корове. Хочешь ездить на таком транспортном средстве? На здоровье. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 11:45 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
МСУможно создать экземпляр класса без вызова конструктора ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 11:46 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
МСУAntonariy, если уж говорить о дефолтах, то самый правильный вариант решения задачи был бы в виде связки атрибута с дефолтным значением и INotifyPropertyChanged, который мог бы ответить на вопрос, было ли изменено свойство. Если оно не было изменено, то EF транслятор брал бы значение из атрибута. Но такая логика не реализована в EF.Да не нужно EF ничего знать о значении дефолта, и ни с чем связывать и брать его ниоткуда не надо. Все это лишнее. Надо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу. МСУЗавязка на null и default<T> через конструктор - абсолютный бред,Это твой бред и у него есть причина:МСУAntonariy, мне лень читать твою генерацию потока сознания. Я по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:07 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
AntonariyЯ по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах. ЕФ крут ! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:11 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
ViPRosAntonariyЯ по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах. ЕФ крут !Да! Но может быть еще круче :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:12 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
AntonariyДа не нужно EF ничего знать о значении дефолта, и ни с чем связывать и брать его ниоткуда не надо. Все это лишнее. Надо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу.И базе ничего знать о дефолтах не надо. О них должен знать слой бизнес-логики. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
зы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:27 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
ViPRosЕФ крут !Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:28 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
Алексей КИ базе ничего знать о дефолтах не надо. О них должен знать слой бизнес-логики. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
зы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам... прально это надо в другом месте ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:35 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
Алексей КAntonariyДа не нужно EF ничего знать о значении дефолта, и ни с чем связывать и брать его ниоткуда не надо. Все это лишнее. Надо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу.И базе ничего знать о дефолтах не надо.Вашей базе не надо, моей надо. На этом и разойдемся с помощью галки в мастере. Алексей Кзы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам...Так как я только начал изучение ORM, мне это не понятно. Можете просветить? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:37 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
ViPRosпрально это надо в другом местеЭто что за место? Ничего знакомого на скриншоте. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:40 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
AntonariyViPRosпрально это надо в другом местеЭто что за место? Ничего знакомого на скриншоте. место, где описывается предметная область - модель ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:44 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
AntonariyДа не нужно EF ничего знать о значении дефолта Правильно, не надо, об этом я и говорю. Это должен знать только тот, кто инициализует модель. То есть логика. Ни EF, ни БД, а логика. AntonariyНадо лишь знать о его наличии и давать базе самой его прописывать в свою же таблицу. Размазывать логику в сервисном слое и базе? Вперёд, гавнокодь дальше, мы не против. AntonariyЭто твой бред и у него есть причина Ты всё перепутал. Это ты тут у нас начал генерить какие-то феерические условия со свистоплясками, тут играем а тут не играем. Хочешь об этом поговорить? Вперед, пиши свой ORM движок, а мы посмеемся. AntonariyЯ по отдельности рассмотрел не nullable -> nullable(t) и не nullable -> default<T>, и упомянул, что сейчас из за отсутствия этих возможностей дописываю конструкторы с дефолтами. Никакой связи. Кони с людьми перемешались в твоей голове, а не моих словах. Тебе битый час люди объясняют, что твои глупые фантазии с нулейблами и дефолтами - бред. Ты сам всех запутал. AntonariyВашей базе не надо, моей надо. На этом и разойдемся с помощью галки в мастере. Надо, пиши хранимки, которые нативно будут поддерживать дефолты при вставке в таблицу. Я писал это с самого начала. К чему ты тут глупый флуд на ровном месте развел, не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:46 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
ViPRosAntonariyпропущено... Это что за место? Ничего знакомого на скриншоте. место, где описывается предметная область - модель Сахават, кончай жечь! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:47 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
AntonariyАлексей Кпропущено... И базе ничего знать о дефолтах не надо.Вашей базе не надо, моей надо. На этом и разойдемся с помощью галки в мастере.Да я и не навязываю. Это просто моё мнение. :-) AntonariyАлексей Кзы: Ни в коем случае нельзя делать это в конструкторе, по понятным причинам...Так как я только начал изучение ORM, мне это не понятно. Можете просветить?Конструктор вызывается всегда. В том числе и в случае создания объекта в результате выполнения LINQ-запроса. Не думаю, что Вы этого хотите. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:49 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
ViPRosAntonariyпропущено... Это что за место? Ничего знакомого на скриншоте. место, где описывается предметная область - модель"Ну экран, ну кнопки, а говорить-то куда?" (б) Где физически хранятся значения дефолтов? Поддерживаются ли формулы? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:50 |
|
EF 5 - Как увеличить значение одного поля?
|
|||
---|---|---|---|
#18+
ViPRosAntonariyпропущено... Это что за место? Ничего знакомого на скриншоте. место, где описывается предметная область - модельА если дефолтное значение должно вычисляться в момент добавления записи. Всё, приплыли? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 12:53 |
|
|
start [/forum/topic.php?fid=17&msg=38269402&tid=1350014]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
130ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 343ms |
total: | 578ms |
0 / 0 |