我正在嘗試對現有項目進行更改,並且在充滿生成的類的解決方案中找到了一個項目。什麼生成了這個數據庫訪問器代碼?
問題是,在這裏沒有人能告訴我他們是什麼產生的,所以我幾乎沒有在這裏粘貼其中的一個類,希望有人能夠告訴我他們來自哪裏。
我正在使用的解決方案使用Expression Blend 3和Visual Studio 2008.不知道如果這是相關的,但我試圖給我儘可能多的信息,我可以想到......除了這個類,出現在它自己的文件中,有一個「SPResults」文件,其中包含大約5000行此類訪問器類。不太清楚爲什麼EndCustomer在自己的文件中...
從我能看到的我自己看,有一個存儲過程在這個程序鏈接到的數據庫之一,並且SP的名稱是「GetEndCustomers」。然後某些東西創建了一個名爲「EndCustomers」的類來表示此過程的返回類型。
第一部分是來自名爲Database
的類的函數,該類返回所討論對象的集合。
<FunctionAttribute(Name:="dbo.GetEndCustomers")> _
Public Function GetEndCustomers(<Parameter(Name:="Dummy", DbType:="VarChar(1)")> ByVal Dummy As String) As ISingleResult(Of Data.EndCustomer)
Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo), Dummy)
Return CType(result.ReturnValue, ISingleResult(Of Data.EndCustomer))
End Function
這部分是EndCustomer類本身。
Option Strict On
Option Explicit On
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Data.Linq
Imports System.Data.Linq.Mapping
Imports System.Linq
Imports System.Linq.Expressions
Imports System.Reflection
Namespace Data
<Table(Name:="dbo.EndCustomers")> _
Partial Public Class EndCustomer
Implements System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged
Private Shared emptyChangingEventArgs As PropertyChangingEventArgs = New PropertyChangingEventArgs(String.Empty)
Private _ID As Byte
Private _Name As String
#Region "Extensibility Method Definitions"
Partial Private Sub OnLoaded()
End Sub
Partial Private Sub OnValidate(ByVal action As System.Data.Linq.ChangeAction)
End Sub
Partial Private Sub OnCreated()
End Sub
Partial Private Sub OnIDChanging(ByVal value As Integer)
End Sub
Partial Private Sub OnIDChanged()
End Sub
Partial Private Sub OnNameChanging(ByVal value As String)
End Sub
Partial Private Sub OnNameChanged()
End Sub
#End Region
Public Sub New()
MyBase.New()
OnCreated()
End Sub
<Column(Storage:="_ID", AutoSync:=AutoSync.OnInsert, DbType:="TinyInt NOT NULL IDENTITY", IsPrimaryKey:=True, IsDbGenerated:=True)> _
Public Property ID() As Byte
Get
Return Me._ID
End Get
Set(ByVal value As Byte)
If ((Me._ID = value) _
= False) Then
Me.OnIDChanging(value)
Me.SendPropertyChanging()
Me._ID = value
Me.SendPropertyChanged("ID")
Me.OnIDChanged()
End If
End Set
End Property
<Column(Storage:="_Name", DbType:="VarChar(40) NOT NULL", CanBeNull:=False)> _
Public Property Name() As String
Get
Return Me._Name
End Get
Set(ByVal value As String)
If (String.Equals(Me._Name, value) = False) Then
Me.OnNameChanging(value)
Me.SendPropertyChanging()
Me._Name = value
Me.SendPropertyChanged("Name")
Me.OnNameChanged()
End If
End Set
End Property
Public Event PropertyChanging As PropertyChangingEventHandler Implements System.ComponentModel.INotifyPropertyChanging.PropertyChanging
Public Event PropertyChanged As PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Protected Overridable Sub SendPropertyChanging()
If ((Me.PropertyChangingEvent Is Nothing) _
= False) Then
RaiseEvent PropertyChanging(Me, emptyChangingEventArgs)
End If
End Sub
Protected Overridable Sub SendPropertyChanged(ByVal propertyName As [String])
If ((Me.PropertyChangedEvent Is Nothing) _
= False) Then
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End If
End Sub
End Class
End Namespace
所以,是啊,有誰能告訴我什麼已經用來生成這個類?這可能是Visual Studio,Expression Blend,SQL Server Management Studio或我甚至沒有注意到的軟件中的一些隱藏在PC上的東西。任何線索,任何人?
Windows搜索沒有提出解決方案目錄中的任何一個......我已經看到Linq-to-SQL在搜索短語「可擴展性方法定義」時提及。也許最初的編碼器刪除了.dbml文件... – Frosty840 2010-10-21 11:05:00
是的,t發現這個人已經生成了所有這些類,然後拆分生成的文件,然後將一些但不是全部生成的類取出來他們自己的.vb文件。順便說一句,他是否以這種方式做事是正確的(我假定他的修改是將iNotifyPropertyChanging實現添加到類中),還是可以自動添加iNotifyPropertyChanged/Changing? – Frosty840 2010-10-21 11:36:07