powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ №34 Bill and Бетси.
3 сообщений из 3, страница 1 из 1
LINQ №34 Bill and Бетси.
    #35314409
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! Тут попросили нумеровать выпуски. Попробую! Итак есть интересная статья
Beth Massi Simple validation with linq-to-sql classes Про расширения возможности проверки. Но если пример сделать сами то обнаруживается такая специфика LINQ отсутствие RowState.
Более подробно.Пусть есть две мастер - детальных скажем Nakl и NaklDtl. В форме редактирования есть шапка и грид показывающий детальную часть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
      NaklDataContext db;
        private void Form2_Load(object sender, EventArgs e)
        {
            db = new NaklDataContext();
            nakldoc = db.Nakls.First<Nakl>(n => n.id == id);
            naklBindingSource.DataSource = nakldoc;    
            naklDtlsBindingSource.DataSource = nakldoc.NaklDtls;
            
        }
В частичном классе NaklDtl делаем проверку что кол-во amount не 0 или null
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 partial class NaklDtl
    {
        public bool HasErrod = false;

        partial void OnamountChanging(decimal? value)
        {
            Checked_amount(value);
        }

        private void Checked_amount(decimal? value)
        {
            if (!value.HasValue) HasErrod = true;
            else if (value.Value ==  0 ) HasErrod = true;
            else HasErrod = false;
        
        }
        partial void OnValidate(ChangeAction action)
        {             
            Checked_amount(this.amount);
            if (HasErrod) throw new Exception("Нет количества!");
        }

    }
Вызываем документ на коррекцию добавляем несколько строк с пустым или нулевым amount и удаляем их! Нажимаем сохранить
Код: plaintext
  db.SubmitChanges();
Этот метод вызывает OnValidate(ChangeAction action) и подсовывает для проверки все удалённые строки, которые конечно проверять не надо!
...
Рейтинг: 0 / 0
LINQ №34 Bill and Бетси.
    #35314568
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем если перед сохранением посмотреть
ChangeSet change_set = db.GetChangeSet();
то удалённых нет!
...
Рейтинг: 0 / 0
LINQ №34 Bill and Бетси.
    #35315220
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно что в Entity Framework есть понятие состояние записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
          string s;
            foreach (NaklModel.NaklDtl o in CurrentHdr.NaklDtl) 
            {

                var state = context.ObjectStateManager.GetObjectStateEntry(o.EntityKey);
                if (state.EntityKey.EntityKeyValues == null)
                    s = "null";
                else if (state.EntityKey.EntityKeyValues[ 0 ] == null)
                    s = "null";
                else
                    s = state.EntityKey.EntityKeyValues[ 0 ].ToString();
                MessageBox.Show(String.Format("{0}={1}",s, state.State));
            }
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ №34 Bill and Бетси.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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