Как изменить свойство ReadOnly Linq - PullRequest
1 голос
/ 18 сентября 2008

У меня есть класс, сгенерированный LINQ to SQL со свойством только для чтения:

<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, чтобы увидеть мои изменения?

Ответы [ 3 ]

2 голосов
/ 18 сентября 2008

Установите существующее свойство TotalLogins как личное или защищенное и удалите атрибут readonly. Вы также можете переименовать его, например, InternalTotalLogins.

Затем вручную создайте новое свойство в частичном классе, которое будет открыто отображаться как свойство только для чтения:

Public ReadOnly Property TotalLogins() As System.Nullable(Of Integer)
    Get
        Return Me.InternalTotalLogins
    End Get
End Property
0 голосов
/ 07 июня 2009

Перед изменением поля вызовите SendPropertyChanging (), а затем после вызова SendPropertyChanged (""). Это заставит отслеживание сущности таблицы знать, что что-то изменилось.

0 голосов
/ 18 сентября 2008
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

и затем обновите это. Я думаю, что он не будет сохранять свойства только для чтения по умолчанию. И зачем это все равно. Я теперь взломать, но это жизнь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...