2009-01-31 2 views
0

У меня есть некоторый код, как это:Linq SubmitChanges не работает

Function GetTypeFromTableName(ByVal _TableName As String, ByVal _DataContext As DataContext) 

      Dim Mytype As Type = (From t In _DataContext.Mapping.GetTables Where t.TableName = "dbo." + _TableName Select t.RowType.Type).SingleOrDefault 
      Return Mytype 

    End Function 

Dim DBA As New LINQDataContext 
_TBLName="City" 
TableType = GetTypeFromTableName(_TBLName, DBA) 

       CallByName(obj, "Code", CallType.Set,1) 

       Dim Equery = From T In DBA.GetTable(TableType) Select T 

       Equery = Equery.Where(Function(Oj1) Oj1 Is obj) 

       Dim oopp = From t In Equery Select CallByName(t, "CName", CallType.Get, Nothing) 
       oopp.ToList.Item(0) = Txt_Name.Text 
       DBA.SubmitChanges() 

SubmitChanges не работают. Что не так?

ответ

2

Похоже, что вы выбираете список анонимных типов, а затем изменяете значение в списке анонимных типов, не совпадающих с объектом в таблице. Поскольку вы не обновили сам объект таблицы, SubmitChanges не имеет никакого отношения.

Попробуйте изменить его к следующему

Dim matchingObj = Equery.Where(Function(Oj1) Oj1 Is obj) 
          .SingleOrDefault(); 

Затем установите значение свойства.

CallByName(matchingObj, "CName", CallType.Set, Txt_Name.Text); 

Отправьте ваши изменения.

Примечание: Я прочитал VB в порядке, но я не так хорошо его пишу. Возможно, вам придется исправить мой синтаксис. Вы также можете убедиться, что есть соответствующий объект, прежде чем пытаться установить его свойство.

+0

спасибо большое за ваш ответ. – 2009-02-01 05:53:42

+0

Это просто решило мою проблему, спасибо! –

1

Это старый, но я думал, что приду и проясню это.

Всякий раз, когда ваше обновление или недочеты не работают, попробуйте puttin InsertOnSubmit() stat. Эта статута даст вам подробную ошибку.

в моем случае у меня был очень простой код.

 var single = dataContext.MySysTables.FirstOrDefault(); 
     single.DispatchIdIndex ++; 
     single.ModifyDate = DateTime.Now; 
     dataContext.SubmitChanges(); 

Это не обновление. Когда я помещаю строку InsertOnSubmit (одиночная), чем это дало мне ошибку, что «данные нельзя вставить, потому что таблица не имеет Первичного ключа». Это была моя тестовая таблица, в которой у меня не было первичного ключа. Как только я добавил новый столбец и сделал первичный ключ, все работало нормально.

мир

Смежные вопросы