2010-10-21 94 views
2

我正在嘗試對現有項目進行更改,並且在充滿生成的類的解決方案中找到了一個項目。什麼生成了這個數據庫訪問器代碼?

問題是,在這裏沒有人能告訴我他們是什麼產生的,所以我幾乎沒有在這裏粘貼其中的一個類,希望有人能夠告訴我他們來自哪裏。

我正在使用的解決方案使用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上的東西。任何線索,任何人?

回答

3

它看起來像Linq2Sql或EntityFramework生成的類。

檢查您的項目是否包含.edmx(EntityFramework)或.dbml(Linq2Sql)文件,並且您找到了「罪魁禍首」。

+0

Windows搜索沒有提出解決方案目錄中的任何一個......我已經看到Linq-to-SQL在搜索短語「可擴展性方法定義」時提及。也許最初的編碼器刪除了.dbml文件... – Frosty840 2010-10-21 11:05:00

+0

是的,t發現這個人已經生成了所有這些類,然後拆分生成的文件,然後將一些但不是全部生成的類取出來他們自己的.vb文件。順便說一句,他是否以這種方式做事是正確的(我假定他的修改是將iNotifyPropertyChanging實現添加到類中),還是可以自動添加iNotifyPropertyChanged/Changing? – Frosty840 2010-10-21 11:36:07

相關問題