На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> linq 2 sql , не инсертится
    ExpandedWrap disabled
                  lnq2sql_visitDataContext db = new lnq2sql_visitDataContext();
                  IQueryable<Visit> lstV = from visit in db.Visits
                                           where visit.dt == DateTime.Today
                                           select visit;
                  Visit v = lstV.Count() == 0 ? null : lstV.First();
                  if( v == null )
                  {
                      v = new Visit();
                      v.dt = DateTime.Today;
                      v.visit_count = 1;
                      db.Visits.InsertOnSubmit(v);
                  } else
                  {
                      v.visit_count++;
                  }
                  db.SubmitChanges();

    в таблице "visit" (соответствует db.Visits) два поля: dt типа DateTime - первичный ключ, и visit_count - int. при выполнении кода на строке db.Visits.InsertOnSubmit(v); вылетает исключение, что в таблице нет первичного ключа...

    ??? Думал, может надо сделать dt уникальным... не получается... переключатель в строке Identity specification из "No" переключаться куда-либо не хочет....
      Цитата Budda @
      ??? Думал, может надо сделать dt уникальным... не получается... переключатель в строке Identity specification из "No" переключаться куда-либо не хочет....

      Identity это автоинкремент для целочисленных значений. Что бы установить поле первичным ключом нужно выделить его в дизайнере и на row header из контекстного меню выбрать Set Primary Key
        juice так и делал...
          Цитата Budda @
          juice так и делал...

          А классы после этого перегенерировал?

          Добавлено
          ExpandedWrap disabled
                        DataClassesDataContext context = new DataClassesDataContext();
             
                        var result = (from p in context.Accounts
                                       where p.Id > 100
                                       select p).FirstOrDefault<Account>();
             
                        if (result == null)
                        {
                            result = new Account();
                            result.Email = "juice@juice.com";
                            result.Login = "juice";
                            result.Password = "juice";
                            context.Accounts.InsertOnSubmit(result);            
                            context.SubmitChanges();
                        }
             
                        context.Dispose();


          Специально проверил вот код аналогичный твоему который прекрассно работает.
            Цитата juice @
            А классы после этого перегенерировал?

            подозревал, что нечто подобное надо было сделать, но не нашел "кнопку". удалить/создать наверное будет глупо? как сделать по-умному?
              Цитата Budda @
              подозревал, что нечто подобное надо было сделать, но не нашел "кнопку". удалить/создать наверное будет глупо? как сделать по-умному?

              Подозреваю, что варианта лучше чем удалить сущность в dbml редакторе, а потом заново перетащить нет. Может кто, что подскажет.
                Удалил, создал заново... при этом у класа, порождённого от DataContext пропал конструктор по-умолчанию... это наверное потому, что у меня в вэб конфиге две строки соединения...

                вторая проблема: после добавления таблицы в файл linq2sql при компиляции получаю ошибку:
                Цитата
                Error 102 The value for the property "Settings Property Name" is not valid for the current language. 0 0
                а куда она ведёт - не могу понять...
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0222 ]   [ 15 queries used ]   [ Generated: 19.05.24, 16:28 GMT ]