DataServiceContext.SetLink(Object, String, Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memberi tahu DataServiceContext bahwa tautan baru ada di antara objek yang ditentukan dan bahwa tautan diwakili oleh properti yang ditentukan oleh sourceProperty
parameter .
public:
void SetLink(System::Object ^ source, System::String ^ sourceProperty, System::Object ^ target);
public void SetLink (object source, string sourceProperty, object target);
member this.SetLink : obj * string * obj -> unit
Public Sub SetLink (source As Object, sourceProperty As String, target As Object)
Parameter
- source
- Object
Objek sumber untuk tautan baru.
- sourceProperty
- String
Properti pada objek sumber yang mengidentifikasi objek target tautan baru.
- target
- Object
Objek anak yang terlibat dalam tautan baru yang akan diinisialisasi dengan memanggil metode ini. Objek target harus merupakan subjenis dari jenis yang diidentifikasi oleh sourceProperty
parameter . Jika target
diatur ke null, panggilan mewakili operasi hapus tautan.
Pengecualian
Ketika source
, sourceProperty
atau target
null.
Tautan yang ditentukan sudah ada.
-atau-
Objek yang disediakan sebagai source
atau berada dalam Detached status atau Deletedtarget
.
-atau-
sourceProperty
bukan properti navigasi yang menentukan referensi ke satu objek terkait.
Contoh
Contoh berikut menunjukkan cara menggunakan AddLink metode dan SetLink untuk membuat tautan yang menentukan hubungan. Dalam contoh ini, properti navigasi pada Order_Details
objek juga diatur secara eksplisit.
int productId = 25;
string customerId = "ALFKI";
Order_Detail newItem = null;
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
try
{
// Get the specific product.
var selectedProduct = (from product in context.Products
where product.ProductID == productId
select product).Single();
// Get the specific customer.
var cust = (from customer in context.Customers.Expand("Orders")
where customer.CustomerID == customerId
select customer).Single();
// Get the first order.
Order order = cust.Orders.FirstOrDefault();
// Create a new order detail for the specific product.
newItem = Order_Detail.CreateOrder_Detail(
order.OrderID, selectedProduct.ProductID, 10, 5, 0);
// Add the new order detail to the context.
context.AddToOrder_Details(newItem);
// Add links for the one-to-many relationships.
context.AddLink(order, "Order_Details", newItem);
context.AddLink(selectedProduct, "Order_Details", newItem);
// Add the new order detail to the collection, and
// set the reference to the product.
order.Order_Details.Add(newItem);
newItem.Product = selectedProduct;
// Send the changes to the data service.
DataServiceResponse response = context.SaveChanges();
// Enumerate the returned responses.
foreach (ChangeOperationResponse change in response)
{
// Get the descriptor for the entity.
EntityDescriptor descriptor = change.Descriptor as EntityDescriptor;
if (descriptor != null)
{
if (descriptor.Entity.GetType() == typeof(Order_Detail))
{
Order_Detail addedItem = descriptor.Entity as Order_Detail;
if (addedItem != null)
{
Console.WriteLine("New {0} item added to order {1}.",
addedItem.Product.ProductName, addedItem.OrderID.ToString());
}
}
}
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred when saving changes.", ex);
}
// Handle any errors that may occur during insert, such as
// a constraint violation.
catch (DataServiceRequestException ex)
{
throw new ApplicationException(
"An error occurred when saving changes.", ex);
}
Dim productId = 25
Dim customerId = "ALFKI"
Dim newItem As Order_Detail = Nothing
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Try
' Get the specific product.
Dim selectedProduct = (From product In context.Products _
Where product.ProductID = productId _
Select product).Single()
' Get the specific customer.
Dim cust = (From customer In context.Customers.Expand("Orders") _
Where customer.CustomerID = customerId _
Select customer).Single()
' Get the first order.
Dim order = cust.Orders.FirstOrDefault()
' Create a new order detail for the specific product.
newItem = Order_Detail.CreateOrder_Detail( _
order.OrderID, selectedProduct.ProductID, 10, 5, 0)
' Add the new order detail to the context.
context.AddToOrder_Details(newItem)
' Add links for the one-to-many relationships.
context.AddLink(order, "Order_Details", newItem)
context.AddLink(selectedProduct, "Order_Details", newItem)
' Add the new order detail to the collection, and
' set the reference to the product.
order.Order_Details.Add(newItem)
newItem.Product = selectedProduct
' Send the insert to the data service.
Dim response As DataServiceResponse = context.SaveChanges()
' Enumerate the returned responses.
For Each change As ChangeOperationResponse In response
' Get the descriptor for the entity.
Dim descriptor = TryCast(change.Descriptor, EntityDescriptor)
If Not descriptor Is Nothing Then
Dim addedProduct = TryCast(descriptor.Entity, Product)
If Not addedProduct Is Nothing Then
Console.WriteLine("New product added with ID {0}.", _
addedProduct.ProductID)
End If
End If
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred when saving changes.", ex)
' Handle any errors that may occur during insert, such as
' a constraint violation.
Catch ex As DataServiceRequestException
Throw New ApplicationException( _
"An error occurred when saving changes.", ex)
Keterangan
Tautan baru dibuat dalam status Added . DataServiceContext menambahkan tautan baru ini ke kumpulan tautan yang baru dibuat untuk dikirim ke layanan data pada panggilan berikutnya ke SaveChanges.
Jika argumen target null, tautan yang diwakili oleh sourceProperty harus dihapus atau dihapus (Tautan dipindahkan ke status Deleted ).
Tautan adalah hubungan satu arah. Jika ada penunjuk belakang yang menunjukkan asosiasi dua arah, metode ini harus dipanggil lagi untuk memberi tahu DataServiceContext tautan kedua
Metode ini hanya mendukung penambahan tautan ke hubungan dengan multiplicity = 1 (Properti sumber adalah referensi objek). Misalnya, jika kelas terkait dengan kelas lain oleh properti, panggilan ini dapat digunakan untuk berhubungan dengan Person
Person
.Friend
Person
Person
Metode ini akan memberikan pengecualian jika yang sourceProperty
diwakili memiliki hubungan kardinalitas lebih dari satu.