Linq SubmitChanges不起作用

时间:2009-01-31 20:36:00

标签: vb.net linq

我有一些像这样的代码:

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 个答案:

答案 0 :(得分:2)

在我看来,您正在选择匿名类型列表,然后更改不在表中匹配对象中的匿名类型列表中的值。由于您尚未更新表对象本身,因此SubmitChanges无需执行任何操作。

尝试将其更改为以下

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

然后设置属性值。

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

然后提交您的更改。

注意:我读VB好,但是我写不好。您可能需要修复我的语法。您可能还希望在尝试设置其属性之前确保存在匹配的对象。

答案 1 :(得分:1)

这已经过时了,但我想我会明白这一点。

每当您的更新或Submitchanges失败时,请尝试puttin InsertOnSubmit()声明。此声明将为您提供详细错误。

就我而言,我的代码非常简单。

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

这没有更新。当我输入一个InsertOnSubmit(单)行时,它给出的错误是“由于表没有主键,因此无法插入数据”。这是我的测试表,我没有主键。一旦我添加了一个新列并制作了一个主键而不是一切正常。

和平