Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda bisa menyesuaikan kode yang dihasilkan Visual Basic dan C# di LINQ Anda untuk SQL proyek dengan menggunakan metode parsial. Kode yang linq untuk SQL menghasilkan mendefinisikan tanda tangan sebagai salah satu bagian dari metode parsial. Jika Anda ingin menerapkan metode ini, Anda bisa menambahkan metode parsial Anda sendiri. Jika Anda tidak menambahkan implementasi Anda sendiri, pengompilasi membuang tanda tangan metode parsial dan memanggil metode default di LINQ untuk SQL.
Catatan
Jika Anda menggunakan Visual Studio, Anda bisa menggunakan Desainer Relasional Objek untuk menambahkan validasi dan penyesuaian lainnya ke kelas entitas.
Misalnya, pemetaan default untuk Customer
kelas dalam database sampel Northwind menyertakan metode parsial berikut:
partial void OnAddressChanged();
Partial Private Sub OnAddressChanged()
End Sub
Anda bisa menerapkan metode Anda sendiri dengan menambahkan kode seperti berikut ini ke kelas parsial Customer
Anda sendiri:
public partial class Customer
{
partial void OnAddressChanged();
partial void OnAddressChanged()
{
// Insert business logic here.
}
}
Partial Class Customer
Private Sub OnAddressChanged()
' Insert business logic here.
End Sub
End Class
Pendekatan ini biasanya digunakan dalam LINQ untuk SQL mengambil alih metode default untuk Insert
, Update
, Delete
, dan untuk memvalidasi properti selama peristiwa siklus hidup objek.
Untuk informasi selengkapnya, lihat Metode Parsial (Visual Basic) atau parsial (Metode) (Referensi C#) (C#).
Contoh 1
Contoh berikut menunjukkan ExampleClass
terlebih dahulu karena mungkin didefinisikan oleh alat pembuatan kode seperti SQLMetal, dan kemudian bagaimana Anda mungkin hanya menerapkan salah satu dari dua metode.
// Code-generating tool defines a partial class, including
// two partial methods.
partial class ExampleClass
{
partial void onFindingMaxOutput();
partial void onFindingMinOutput();
}
// Developer implements one of the partial methods. Compiler
// discards the signature of the other method.
partial class ExampleClass
{
partial void onFindingMaxOutput()
{
Console.WriteLine("Maximum has been found.");
}
}
' Code-generating tool defines a partial class, including
' two partial methods.
Partial Class ExampleClass
Partial Private Sub OnFindingMaxOutput()
End Sub
Partial Private Sub OnFindingMinOutput()
End Sub
Sub ExportResults()
OnFindingMaxOutput()
OnFindingMinOutput()
End Sub
End Class
' Developer implements one of the partial methods. Compiler
' discards the other method.
Class ExampleClass
Private Sub OnFindingMaxOutput()
Console.WriteLine("Maximum has been found.")
End Sub
End Class
Contoh 2
Contoh berikut menggunakan hubungan antara entitas Shipper
dan Order
. Perhatikan di antara metode parsial, InsertShipper
dan DeleteShipper
. Metode ini mengesampingkan metode parsial default yang disediakan oleh LINQ ke pemetaan SQL.
public static int LoadOrdersCalled = 0;
private IEnumerable<Order> LoadOrders(Shipper shipper)
{
LoadOrdersCalled++;
return this.Orders.Where(o => o.ShipVia == shipper.ShipperID);
}
public static int LoadShipperCalled = 0;
private Shipper LoadShipper(Order order)
{
LoadShipperCalled++;
return this.Shippers.Single(s => s.ShipperID == order.ShipVia);
}
public static int InsertShipperCalled = 0;
partial void InsertShipper(Shipper shipper)
{
InsertShipperCalled++;
// Call a Web service to perform an insert operation.
InsertShipperService(shipper);
}
public static int UpdateShipperCalled = 0;
private void UpdateShipper(Shipper original, Shipper current)
{
Shipper shipper = new Shipper();
UpdateShipperCalled++;
// Call a Web service to update shipper.
InsertShipperService(shipper);
}
public static bool DeleteShipperCalled;
partial void DeleteShipper(Shipper shipper)
{
DeleteShipperCalled = true;
}
Public Shared LoadOrdersCalled As Integer = 0
Private Function LoadOrders(ByVal shipper As Shipper) As _
IEnumerable(Of Order)
LoadOrdersCalled += 1
Return Me.Orders.Where(Function(o) o.ShipVia = _
shipper.ShipperID)
End Function
Public Shared LoadShipperCalled As Integer = 0
Private Function LoadShipper(ByVal order As Order) As Shipper
LoadShipperCalled += 1
Return Me.Shippers.Single(Function(s) s.ShipperID = _
order.ShipVia)
End Function
Public Shared InsertShipperCalled As Integer = 0
Private Sub InsertShipper(ByVal instance As Shipper)
InsertShipperCalled += 1
' Call a Web service to perform an insert operation.
InsertShipperService(shpr:=Nothing)
End Sub
Public Shared UpdateShipperCalled As Integer = 0
Private Sub UpdateShipper(ByVal original As Shipper, ByVal current _
As Shipper)
UpdateShipperCalled += 1
' Call a Web service to update shipper.
InsertShipperService(shpr:=Nothing)
End Sub
Public Shared DeleteShipperCalled As Boolean
Private Sub DeleteShipper(ByVal instance As Shipper)
DeleteShipperCalled = True
End Sub