powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF 5 - Как увеличить значение одного поля?
97 сообщений из 97, показаны все 4 страниц
EF 5 - Как увеличить значение одного поля?
    #38263855
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать
UPDATE MyTable SET MyField = MyField + 10 WHERE MyID = 1
с помощью EF 5 + FW 4.5?
Спасибо.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38263940
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
using(var ctx = new MyContext())
{
    var obj = ctx.MyTable.Where(o => o.MyID == 1).First();
    obj.MyField += 10;
    ctx.SaveChanges();
}
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38264050
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Код: c#
1.
2.
3.
4.
5.
6.
using(var ctx = new MyContext())
{
    var obj = ctx.MyTable.Where(o => o.MyID == 1).First();
    obj.MyField += 10;
    ctx.SaveChanges();
}



Ужос... :)
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38264276
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей К
Код: c#
1.
2.
3.
4.
5.
6.
using(var ctx = new MyContext())
{
    var obj = ctx.MyTable.Where(o => o.MyID == 1).First();
    obj.MyField += 10;
    ctx.SaveChanges();
}



Ужос... :)

Алексей К - спасибо!
МСУ, ну блин хоть бы сказал что такого плохого в этом коде? Как лучше?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38264336
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗануда!

Код: c#
1.
2.
3.
4.
5.
6.
using(var ctx = new MyContext())
{
    var obj = ctx.MyTable.First(o => o.MyID == 1);
    obj.MyField += 10;
    ctx.SaveChanges();
}
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38264367
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38265335
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему не
Код: c#
1.
var obj = ctx.MyTable.Find(1);

?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38265460
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа почему не
Код: c#
1.
var obj = ctx.MyTable.Find(1);

?После этого надо делать проверку на null. Ну и является ли MyID ключом мы не знаем.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38265496
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAntonariyа почему не
Код: c#
1.
var obj = ctx.MyTable.Find(1);

?После этого надо делать проверку на null.А если MyID = 1 не существует, First не null вернет?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38265562
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей Кпропущено...
После этого надо делать проверку на null.А если MyID = 1 не существует, First не null вернет?FirstOrDefault вернёт null. В First будет Exception.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38265659
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну да. Я же уже юзал оба.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267069
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУЗануда!

Код: c#
1.
2.
3.
4.
5.
6.
using(var ctx = new MyContext())
{
    var obj = ctx.MyTable.First(o => o.MyID == 1);
    obj.MyField += 10;
    ctx.SaveChanges();
}



Хорошо, а как сделать несколько таких вызовов в одну транзакцию?

Я примеры про TransactionScope нашёл.
Мне интересно знать сколько раз выполнять ctx.SaveChanges();, один раз хватит в конце или для каждой таблицы?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  using (TransactionScope transaction = new TransactionScope())
            {
using(var ctx = new MyContext())
{
    var obj = ctx.MyTable.First(o => o.MyID == 1);
    obj.MyField += 10;
    ctx.SaveChanges();

var obj2 = ctx.MyTable2.First(o => o.MyID == 1);
    ob2j.MyField += 10;
    ctx.SaveChanges();

var ob3j = ctx.MyTable3.First(o => o.MyID == 1);
    obj3.MyField += 10;
    ctx.SaveChanges();

transaction.Complete();
}
}
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267098
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234,

Выполните 1 раз в конце, и TransctionScope не потребуется.
P.S. Могу ошибаться, но при использовании TS надо явно соединение открывать внутри него.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267117
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234Мне интересно знать сколько раз выполнять ctx.SaveChanges();, один раз хватит в конце или для каждой таблицы? Сколько надо, столько и делайте. Часто нужно из одной таблицы получить новые id, чтобы вставить их в другую, а без промежуточного SaveChanges им взяться неоткуда. Такие случаи как раз и заворачиваются в TransactionScope, если того требуют условия целостности.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267140
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

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

Достаточно присвоить значение свойству навигации, ID будет сам подставлен при вставке.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267146
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchP.S. Могу ошибаться, но при использовании TS надо явно соединение открывать внутри него.Наоборот, перед ним. И закрывать после. Иначе будет распределённая транзакция.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267189
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо в данном случае TransactionScope, после одного SaveChanges всё отправится батчем на сиквел сервер в единой транзакции по умолчанию.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267217
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperНе надо в данном случае TransactionScope, после одного SaveChanges всё отправится батчем на сиквел сервер в единой транзакции по умолчанию.

Да, всем спасибо - так действительно работает.
Теперь ДРУГОЙ ВОПРОС:
Что то у меня INSERT не делается.
У меня в этой транзакции два UPDATE и один INSERT.

INSERT делаю так:

Код: c#
1.
2.
ctx.MyOtherTable.Add(new MyOtherTable { Field1 = 1, Field2 = "test"});
ctx.SaveChanges();



Получаю исключение которое не могу прочитать, потому как этото метод он в WCF-Сервисе.
Подозреваю что проблема в том что я не задаю значения для ещё 2ух полей:
id - int Autoincrement KEY
Created - тип DateTime Default - GetDate()

В нормальном SQL-Запросе я бы их и указывать не стал бы
id - автоматически присвоится при в ставке, и Created тоже - будет втавлена текущее DateTime

А вот как в EF 5 это делается?
Спасибо.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267221
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234,


M234Получаю исключение которое не могу прочитать, потому как этото метод он в WCF-Сервисе.

Что мешает на сервисе исключение посмотреть?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267230
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchM234,


M234Получаю исключение которое не могу прочитать, потому как этото метод он в WCF-Сервисе.

Что мешает на сервисе исключение посмотреть?

Отсутствие ноухау - не знаю как и отсутсвие времени в данный момент на поиски.

Проблему я прояснил: Если добавить ещё и поле Created = DateTime.Now то INSERT отрабатывает без ошибок.
Но ВОПРОС остался: А можео как-то сделать так что бы Default-Значение определённое в таблице для этого поля вставлялось?
Пробовал Created = null - даже не компилируется.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267237
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234,

http://www.gotdotnet.ru/forums/1/136155/

1) DefaultValue надо заполнить в моделе
2) DateTime, похоже, из каробки, не поддерживается.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267238
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коробки*
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267242
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще изменить StoreGeneratedPattern на Computed, если не надо менять значение из кода
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267245
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267247
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за информацию.
Я понял - это недоделка MS или кто там над EF работает.
Ладно, бум выкручиваться как-нибудь.
В данном конкретном случае меня устроит Created = DateTime.Now, но вообще конечно это серьёзная проблемка...
Ждём EF 6 ;)
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267251
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234,

с чего бы это недоделка? Если тип не computed, EF передает значение поля в запрос на вставку/изменение, поэтому Default в базе и не срабатывает. На основании чего EF должен исключить поле?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267256
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchM234,

с чего бы это недоделка? Если тип не computed, EF передает значение поля в запрос на вставку/изменение, поэтому Default в базе и не срабатывает. На основании чего EF должен исключить поле?

На основании того, что значение при вставке не указано - как это делает SQL-cервер. Почему нет?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267260
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234,

А как он отличит что значение не указано от "указано null" или "указано 01.01.0001" ? Может вы хотели чтобы эти значения в базу попали?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267286
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchM234,

А как он отличит что значение не указано от "указано null" или "указано 01.01.0001" ? Может вы хотели чтобы эти значения в базу попали?

Мне всё равно как.
Например по отсутствию в конструкторе:
Код: c#
1.
2.
ctx.MyOtherTable.Add(new MyOtherTable { Field1 = 1, Field2 = "test"});
ctx.SaveChanges();



раз Created тут нет, то попробовать и не писать его в генерируемый SQL-запрос совсем - тогда сервер возьмёт Default если он определён или вернёт ошибку.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267293
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234,

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

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

Достаточно присвоить значение свойству навигации, ID будет сам подставлен при вставке.Можно тынц на пример, где это делается?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267390
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267399
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchM234,

А как он отличит что значение не указано от "указано null" или "указано 01.01.0001" ?Запретить null. А 01.01.0001 и не null вовсе.
LelouchМожет вы хотели чтобы эти значения в базу попали?Как правило потребность сделать дефолт не пересекается с потребностью сделать null в том же поле. Иначе смысл дефолта только во одном — возможности перезаписать его null'ом позже. Но с ходу я не могу придумать, к чему это можно присобачить. И потом, на такую редкую ситуацию не лениво и руками конструктор дописать.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267409
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Вопрос в том как EF должен отличить состояние "присвоен null" или "присвоено 01.01.0001" от "не нужно указывать в запросе" ?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38267458
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchAntonariy,

Вопрос в том как EF должен отличить состояние "присвоен null" или "присвоено 01.01.0001" от "не нужно указывать в запросе" ?Нужно, чтобы поля модели, имеющие дефолт и запрет на null, генерировались как Nullable(Of T). Тогда, если поле содержит null, то подразумевается дефолт, и оно исключается из вставки.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38268320
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

1) это неудобно
2) А если поле Nullable само по себе, но имеет Default в базе?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38268436
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, товарищи M234, Lelouch и Antonariy, развеиваю печаль по поводу дефолтных значений, чеков (ограничений) и прочей DB-гадости :)
1. Дефолтные DB значения - это зло, которое не ложится нормальным грузом в типизированную схему датаконтекста. Логика - только на стороне app layer, никаких костылей БД. Кому не нравится - пишите хранимки, намапливайте на контекст и радуйтесь DB-ориентированным возможностям. Лично я против такого подхода в принципе.
2. Если нужно серверное время (по сути аткуально для двухзвенок, что так же является злом), курим это либо через Database.SqlQuery достаем функцию GETDATE.
3. Кто хочет нормально отвязно от возможностей конкретной СУБД программировать, должен забыть все эти default value, чеки, триггеры и прочий мусор.
4. Вопросы, пожелания :)?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38268953
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchAntonariy,

1) это неудобно
2) А если поле Nullable само по себе, но имеет Default в базе?1) Это неубедительно. Неудобно может быть делать что-то. Это же наоборот, избавляет от необходимости делать кое-что.
2) Ну и делать то, что уже делается сейчас, как будто дефолтов не существует в природе.

МСУ4. Вопросы, пожелания :)?Запилить печеньки для тех, кто не хочет отвязываться от субд.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38268971
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

1) Это избавляет в 1 случае от необходимости задать значение. А во всех остальных случаях это вносит необходимость использовать .Value или .GetValueOrDefault(). Так же это мешает использовать сущности в качестве объектов бизнесс-логики.
2) Ну так найдется второй M234, который скажет что это недоделка EF)
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38268975
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

AntonariyЗапилить печеньки для тех, кто не хочет отвязываться от субд.

Там есть печенька в виде Database.ExecuteSqlCommand и т.д., нужно еще?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38268982
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchА во всех остальных случаях это вносит необходимость использовать .Value или .GetValueOrDefault(). Так же это мешает использовать сущности в качестве объектов бизнесс-логики.Без конкретных примеров все еще не убедительно. Не вижу необходимости, не вижу помех в использовании.

LelouchТам есть печенька в виде Database.ExecuteSqlCommand и т.д., нужно еще?Это не печенька, а не молотое зерно.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38268986
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

то есть представить, что к каждому полю придется дописывать .Value / GetValueOrDefault() вы без примера не способны?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
class Person
{
	public string Name { get; set; }
	public int? Age { get; set; }
}

var p = new Person();
p.Age = ... ; // И вот тут мы начинаем вспоминать, есть ли у Age значение по-умолчанию и является ли null допустимым значением.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269026
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не убедительно.

Не помните — пишите что хотите, никаких запретов тому нет, тем более что вы и так это уже делаете. А я помню и писать не хочу. Пусть компьютер пишет, он это быстрее делает. В конце концов в мастере обновления модели из базы можно вкорячить четвертую галку "(do not) use database defaults", чтобы не лишать любителей подуть на холодное их любимого занятия.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269033
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной из баз, на которую со временем будет натягиваться ef, более трехсот таблиц, в каждой есть дефолты, и в большей части не по одному. И вместо того, чтобы тынцнуть галочку, мне придется писать триста сраных конструкторов.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269036
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

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

У вас неиллюзорные проблемы с формальной логикой. Рассматриваем поле, имеющее дефолт, больше ничего, следите внимательно.

I. Ситуация, которую имеем сейчас:
1) EF ничего не знает о дефолтах.
2) Если ничего не делать и поле допускает null, то сохраняется null
3) Если ничего не делать и поле не допускает null, то при попытке присвоить null генерируется исключение. Чтобы обработать это исключение требуется п. 4
4) Если произвести дополнительные операции (создать конструктор, прописать не null значения), то сохранится то, что прописано в конструкторе.

II. Чего хочется.
1) EF знает о существовании о дефолтов.
2) Если ничего не делать и поле допускает null, то сохраняется null
3) Если ничего не делать и поле не допускает null, то null исключается из операции вставки. В базу попадает прописанный в ней же дефолт, исключение не генерируется. Пункт 4 не нужен.
автор для не-nullable полей требует дополнительных операцийВы в своем уме, какие дополнительные операции? Пересчитайте пункты.

LelouchИ что даст эта опция?
1) Опция называется "Use database defaults"
2) При ее выключении реализуется I.
3) При ее включении реализуется II.

Lelouchкривое до безобразияА вот степень безобразия хотелось бы рассмотреть подробнее (остальное, как мы видим, ни о чем). Операция обновления в случае II. Представим самый трэш и адъ; с клиентской стороны кодит на js классический ССЗБ и умудряется в json прописать null в те поля, где их не было, ведь получен объект от сервера, который теоретически не мог вернуть null в тех полях, где не надо, потому запись получена непосредственно из базы, запрещающей в этих полях null. Фух. Что же произойдет? Если процедура обновления, создающая для этого объект модели (или его конструктор), принимает параметрами значения примитивных типов (маловероятно), то ошибка возникнет после десериализации на этапе вызовы этой процедуры/конструктора. Обычно же процедура получает анонимный объект, который приводит к соответствующему типу. В этом случае ошибку сгенерирует база.

В итоге "безобразие" II выливается в то, на каком уровне ССЗБ словит исключение при операции деления обновления на null. Прошу заметить: в случае операции обновления все отличие I от II лишь тем, что в I исключение сгенерируется конкретно в самой процедуре обновления, а не где-то еще.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269181
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, забудьте про дефолты. В ORM это как кобыле пятое колесо. Никаких дефолтовых значений. Есть только класс, как намапим значения на него, то и уйдет в базу. Точка.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269210
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВ сферическом ORM это как кобыле пятое колесо.Поправил.

Ничего нового.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269288
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

[quote Antonariy]Представим самый трэш и адъ; с клиентской стороны кодит на js классический ССЗБ и умудряется в json прописать null в те поля, где их не было, ведь получен объект от сервера, который теоретически не мог вернуть null в тех полях, где не надо, потому запись получена непосредственно из базы, запрещающей в этих полях null. Фух. Что же произойдет? Если процедура обновления, создающая для этого объект модели (или его конструктор), принимает параметрами значения примитивных типов (маловероятно), то ошибка возникнет после десериализации на этапе вызовы этой процедуры/конструктора. Обычно же процедура получает анонимный объект, который приводит к соответствующему типу. В этом случае ошибку сгенерирует база.[quote]

А в какой тип десереализуется JSON, если поля не nullable можно узнать? А то пока я вижу только 1 исход - при десерелизации получится исключение и на этом всё закончится.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269317
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchА в какой тип десереализуется JSON, если поля не nullable можно узнать? А то пока я вижу только 1 исход - при десерелизации получится исключение и на этом всё закончится.Это происходит в случае I. А в II JSON десериализуется в тип, в котором nullable свойство соответствует не nullable полю в базе. Я же с этого начал: 14330086 . Поэтому при десериализации ошибки не возникнет, она возникнет позже. Либо в базе, либо в самой процедуре, если есть еще какие-то манипуляции с этим полем перед сохранением и нет проверки на null. Но в любом случае это будет null exception, и я не вижу принципиальной разницы, на каком уровне она выскочит. Фактическое поведение немного изменилось, но формальное осталось прежним, не противоречащем правилам.

И напомню, эта ситуация исключительная, не способная возникнуть при минимальном наличии мозга: ну зачем насильно пихать null в обязательные поля, уже имеющие значения? А шанс попасть в продакшн у такого жирного косяка намного меньше одного процента.

А с другой стороны мне не надо писать триста сраных конструкторов. Или триста сраных вьюшек, в которых отфильтрованы default-поля. И скакать с субд на субд не надо. Хочу галку! :)
...
Рейтинг: 0 / 0
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
EF 5 - Как увеличить значение одного поля?
    #38269897
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
off: А вот клиент WCF каким-то чудом создаёт объекты без вызова конструктора.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269915
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККонструктор вызывается всегда
Это не так, Алексей :)

Алексей Кoff: А вот клиент WCF каким-то чудом создаёт объекты без вызова конструктора.
Открываю завесу тайны: http://codearticles.ru/articles/1400
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269922
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей ККонструктор вызывается всегда
Это не так, Алексей :)Мне казалось EF вызывает конструктор. Проверял?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269933
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМне казалось EF вызывает конструктор.
EF вызывает, конечно. Я про то, что утверждение "конструктор вызывается всегда" не совсем точно описывает действительность :)
Ну а по поводу WCF ты таки понял, что это за чудо (я про GetUninitializedObject)?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269934
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня EF вызывает конструктор. Так что не надо тут!
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269942
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу а по поводу WCF ты таки понял, что это за чудо (я про GetUninitializedObject)? Ну спасибо! Я теперь вообще "ВСЁ" знаю.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269974
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА у меня EF вызывает конструктор. Так что не надо тут!

Алексей КEF вызывает, конечно.

Нужно срочно в отпуск, Лёша. Опять.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269975
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА у меня EF вызывает конструктор. Так что не надо тут!

МСУEF вызывает, конечно.

Нужно срочно в отпуск, Лёша. Опять.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269978
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА у меня EF вызывает конструктор. Так что не надо тут!
Алексей КEF вызывает, конечно.
Нужно срочно в отпуск, Лёша. Опять.Одномоментные сообщения.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269979
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
M234LelouchM234,

с чего бы это недоделка? Если тип не computed, EF передает значение поля в запрос на вставку/изменение, поэтому Default в базе и не срабатывает. На основании чего EF должен исключить поле?

На основании того, что значение при вставке не указано - как это делает SQL-cервер. Почему нет?

Не знаю актуально или нет но что мешает переопрделить конструктор по умолчанию (я про CodeFirst)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class MyOtherTable
{
   ....
   ....
   public DateTime MyDate { get; set; }
   ...

public MyOtherTable()
{
   MyDate = DateTime.Now;
}



таким образом получаем вполне норм механизм на значения по умолчанию - если значение изменит юзер то сохранится оно иначе значение по дефолту
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269988
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen12345таким образом получаем вполне норм механизм на значения по умолчанию - если значение изменит юзер то сохранится оно иначе значение по дефолту
Не катит. Это клиентская дата , а не дата БД. Понимаешь, к чему клоню? Клиент и БД могут быть в разных временных зонах. Банально, клиент может просто ручками подправить дату.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38269997
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen12345Не знаю актуально или нет но что мешает переопрделить конструктор по умолчанию (я про CodeFirst)Да хоть CodeLast... Только что про конструктор говорили...
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270008
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КViPRosпропущено...

место, где описывается предметная область - модельА если дефолтное значение должно вычисляться в момент добавления записи. Всё, приплыли?
ну там же есть формулы и даже генераторы для значений
неужто не видно?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270014
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУevgen12345таким образом получаем вполне норм механизм на значения по умолчанию - если значение изменит юзер то сохранится оно иначе значение по дефолту
Не катит. Это клиентская дата , а не дата БД. Понимаешь, к чему клоню? Клиент и БД могут быть в разных временных зонах. Банально, клиент может просто ручками подправить дату.

Я понимаю что это клиентское время - но тут зависит от задачи.
Например сервер БД в японии и у них ночь, а заявление на выдачу кредита делают в Лондоне и там утро. Время создании заявки каким должно лечь в базу? - по мне так клиентским.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270020
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей Кevgen12345Не знаю актуально или нет но что мешает переопрделить конструктор по умолчанию (я про CodeFirst)Да хоть CodeLast... Только что про конструктор говорили...

Учту на будующее.
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270032
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen12345МСУпропущено...

Не катит. Это клиентская дата , а не дата БД. Понимаешь, к чему клоню? Клиент и БД могут быть в разных временных зонах. Банально, клиент может просто ручками подправить дату.

Я понимаю что это клиентское время - но тут зависит от задачи.
Например сервер БД в японии и у них ночь, а заявление на выдачу кредита делают в Лондоне и там утро. Время создании заявки каким должно лечь в базу? - по мне так клиентским.

Речь о дефолтном значение GETDATE. Это время БД априори. Следовательно, речь именно об этой ситуации. Поэтому, выдумывать, что там за задача - не имеет смысла. Согласен?
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270082
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУevgen12345пропущено...


Я понимаю что это клиентское время - но тут зависит от задачи.
Например сервер БД в японии и у них ночь, а заявление на выдачу кредита делают в Лондоне и там утро. Время создании заявки каким должно лечь в базу? - по мне так клиентским.

Речь о дефолтном значение GETDATE. Это время БД априори. Следовательно, речь именно об этой ситуации. Поэтому, выдумывать, что там за задача - не имеет смысла. Согласен?

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

значит фиговые дефольтные значения и фиговая модель
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270230
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУНу а по поводу WCF ты таки понял, что это за чудо (я про GetUninitializedObject)? Ну спасибо! Я теперь вообще "ВСЁ" знаю.
Неа, ты еще не всё знаешь. Я пока умолчал про то, что WPF это риповое зло (ибо только html5). Или я уже упоминал об этом? :)
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270246
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНеа, ты еще не всё знаешь. Я пока умолчал про то, что WPF это риповое зло (ибо только html5). Или я уже упоминал об этом? :)Тролль!
...
Рейтинг: 0 / 0
EF 5 - Как увеличить значение одного поля?
    #38270250
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosАлексей К,

значит фиговые дефольтные значения и фиговая модельПотому что не ложится под твой фреймворк? Жостко...
...
Рейтинг: 0 / 0
97 сообщений из 97, показаны все 4 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF 5 - Как увеличить значение одного поля?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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