0
当我更新数据库时,我必须对每个属性进行硬编码映射,因为在附加结果中使用了异常。这看起来不太优雅。这里有一些更简单的解决方案,我不知道吗?我的代码如下,显示我为此调用的“MapData”方法:更新SqlCE数据库Linq-to-Sql
顺便说一句,实体类(这里;用户)是用SqlMetal自动生成的。
Public Class UserDataService
Public Sub Save(ByVal user As Users)
Dim ctx As New TestDB(connection)
Dim id As Integer = user.Id
If user.Id = 0 Then
Insert(user)
Else
Dim q = (From n In ctx.Users Where n.Id = id Select n).Single
q.MapData(user)
For Each o In user.Orders
o.Save()
Next
' ctx.Users.Attach(user, q) ' Does not work
' ctx.Users.Attach(user, True) ' Does not work
End If
ctx.SubmitChanges()
ctx.Dispose()
End Sub
End Class
Partial Public Class Users
Public Sub MapData(ByVal row As Users)
Me.Name = row.Name
End Sub
End Class
EDIT1:
例外:
ctx.Users.Attach(用户,Q)
不能用钥匙已在添加实体使用。因为没有原始状态修改,如果它声明版本成员或者没有更新检查策略
ctx.Users.Attach(用户,真)
实体只能连接。
EDIT2:
我尝试添加一列时间戳,我相信要满足最后提到的例外。所以我添加这里显示的列。这没有帮助,但也许我需要进一步的设置才能有效?
你什么异常? – SLaks 2011-01-11 14:14:09