我有一些这样的代码:
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不工作。怎么啦?
发布于 2009-01-31 21:04:32
在我看来,您正在选择一个匿名类型列表,然后更改匿名类型列表中的值,而不是表中匹配的对象中的值。因为您还没有更新表对象本身,所以SubmitChanges没有任何事情可做。
尝试将其更改为以下内容
Dim matchingObj = Equery.Where( Function(Oj1) Oj1 Is obj )
.SingleOrDefault();然后设置属性值。
CallByName( matchingObj, "CName", CallType.Set, Txt_Name.Text );然后提交您的更改。
注意:我读过VB,但我写得不是很好。您可能需要修改我的语法。在尝试设置其属性之前,您可能还希望确保存在匹配的对象。
发布于 2009-06-09 19:58:39
这是旧的,但我想我会来把它弄清楚。
每当更新或提交更改失败时,尝试在InsertOnSubmit()语句中输入puttin。该语句将给出详细的错误信息。
在我的例子中,我有非常简单的代码。
var single = dataContext.MySysTables.FirstOrDefault();
single.DispatchIdIndex ++;
single.ModifyDate = DateTime.Now;
dataContext.SubmitChanges();这是没有更新的。当我放入一个InsertOnSubmit(单个)行时,它给了我错误“数据不能被插入,因为表没有主键”。这是我的测试表,我没有主键。一旦我添加了一个新的列,并创建了一个主键,那么一切都很好。
和平
https://stackoverflow.com/questions/499507
复制相似问题