我有一个LINQ to SQL生成的带有readonly属性的类:
<Column(Name:="totalLogins", Storage:="_TotalLogins", DbType:="Int", UpdateCheck:=UpdateCheck.Never)> _
Public ReadOnly Property TotalLogins() As System.Nullable(Of Integer)
Get
Return Me._TotalLogins
End Get
End Property这防止了它在外部被更改,但我想从我的类内部更新属性,如下所示:
Partial Public Class User
...
Public Shared Sub Login(Username, Password)
ValidateCredentials(UserName, Password)
Dim dc As New MyDataContext()
Dim user As User = (from u in dc.Users select u where u.UserName = Username)).FirstOrDefault()
user._TotalLogins += 1
dc.SubmitChanges()
End Sub
...
End Class但是对user._TotalLogins += %1的调用没有写入数据库?对如何让LINQ看到我的更改有什么想法吗?
发布于 2008-09-18 19:42:41
将现有的TotalLogins属性设置为private或protected,并移除readonly属性。您可能还想将其重命名,例如InternalTotalLogins。
然后在将其公开为只读属性的分部类中手动创建一个新属性:
Public ReadOnly Property TotalLogins() As System.Nullable(Of Integer)
Get
Return Me.InternalTotalLogins
End Get
End Property发布于 2008-09-18 19:31:53
Make a second property that is protected or internal(?)
<Column(Name:="totalLogins", Storage:="_TotalLogins", DbType:="Int", UpdateCheck:=UpdateCheck.Never)> _
protected Property TotalLogins2() As System.Nullable(Of Integer)
Get
Return Me._TotalLogins
End Get
Set(byval value as System.Nullable(Of Integer))
Return Me._TotalLogins
End Get
End Property然后更新它。我认为默认情况下它不会保存只读属性。不管怎么说,为什么它应该。我现在是个黑客,但是,嘿,这就是生活。
发布于 2009-06-07 10:31:20
在更改字段之前,调用SendPropertyChanging(),然后调用SendPropertyChanged("")。这将使Table实体跟踪知道某些更改。
https://stackoverflow.com/questions/95364
复制相似问题