Vb.net - можно ли перезаписать сеттер свойства entityframework-auto-generated и поддерживать это изменение независимо от любой регенерации модели?
Использование EF6 и VS2015 с первой моделью базы данных
Одна из таблиц называется "клиент", и одним из ее полей является DOB as Date.
EF генерирует модель и создает файл Customer.vb с содержимым
'------------------------------------------------------------------------------ ' <auto-generated> ' This code was generated from a template. ' ' Manual changes to this file may cause unexpected behavior in your application. ' Manual changes to this file will be overwritten if the code is regenerated. ' </auto-generated> '------------------------------------------------------------------------------ Imports System Imports System.Collections.Generic Partial Public Class Customer Public Property Id As Integer Public Property LastName As String Public Property FirstName As String Public Property DOB As Date Public Property Added As Date Public Overridable Property Visits As ICollection(Of Visit) = New HashSet(Of Visit) End Class
Чего я хочу добиться, если это возможно, так это запустить этот метод
Public Function GetAgeFromDates(dob as Date, optional someDate as Date = Date.Now
и сохраните возвращаемое значение в переменной
Private _AgeOnDate As Integer Public ReadOnly Property AgeOnDate As Integer Get Return _AgeOnDate End Get End Property
при изменении значения DOB.
Что я уже пробовал:
Предупреждение EntityFramework, в начале файла Customer.vb говорится:
' Manual changes to this file will be overwritten if the code is regenerated.
Желая расширить автоматически сгенерированный класс Customer и защитить эти изменения от любой регенерации модели, я создал отдельный файл CustomerExtended.vb с таким содержимым, как
Partial Public Class Patient Private _AgeOnDate As Integer Public ReadOnly Property AgeOnDate As Integer Get Return _AgeOnDate End Get End Property End Sub
Теперь мой вопрос таков:
Возможно ли каким-то образом иметь где-то в CustomerExtended.vb расширенную версию Customer Setter, например:
Public Property DOB As Date Set(value As Date) _DOB = value _AgeOnDate = GetAgeFromDates(value, Date.Now) End Set End Property
Чтобы сделать его коротким:
Можно ли перезаписать сеттер автоматически генерируемого свойства EF и защитить этот код-расширение от потери его при каждой регенерации модели?