Visual Studio'da Nesne Bağlama
Visual Studio, özel nesneler (karşıt olarak diğer veri kaynaklarına varlıkları, DataSet ve Hizmetleri gibi) ile uygulamanızdaki veri kaynağı olarak çalışmak için tasarım araçları sağlar.
Nesne gereksinimleri
Visual Studio tasarım araçlarına verilerle çalışmak özel nesneler için tek gereksinim, nesnenin en az bir ortak özelliği gereğidir.
Genellikle, özel nesneler, Kurucular veya bir uygulama için bir veri kaynağı olarak davranan öznitelikleri belirli herhangi bir arabirim gerektirmez.Ancak, nesneyi sürüklemek isterseniz Veri kaynakları bir veri bağlama denetimi oluşturmak için tasarım yüzeyi için pencere ve nesne kullanılıyorsa, ITypedList veya IListSource arabirimi, nesnenin varsayılan kurucuyu (parametresiz oluşturucusu, diğer bir deyişle) olması gerekir.Aksi halde, Visual Studio veri kaynağı nesnesi başlatılamıyor ve tasarım yüzeyi için öğeyi sürüklediğinizde hata verecektir.
Özel nesneler veri kaynaklarını kullanma örnekleri
Veri kaynağı olarak nesneleriyle çalışırken, kendi mantığını uygulamak için sayısız yollar varken, Visual Studio–generated kullanarak Basitleştirilmiş birkaç standart işlem vardır TableAdapter nesneler.Bu sayfa, TableAdapters kullanarak bu standart işlemlerin nasıl gerçekleştirileceğini anlatır; bir kılavuz olarak kendi özel nesneler oluşturmak için tasarlanmamıştır.Örneğin, genellikle nesneleriniz ya da uygulamanın mantığı özel uygulaması ne olursa olsun aşağıdaki standart işlemleri gerçekleştirir:
Nesneleri (genellikle bir veritabanından) içine veri yükleniyor.
Yazılı bir nesneler topluluğu oluşturma.
Nesneleri ekleme ve nesneleri koleksiyondan kaldırma.
Kullanıcıların formdaki nesne verileri görüntüleme.
Değiştirme / nesne düzenleme.
Verileri veritabanına nesneleri kaydediliyor.
[!NOT]
Daha iyi anlamak ve bu sayfadaki örnekler için içerik sağlamak için aşağıdaki tamamlamak etmeniz öneririz: İzlenecek yol: Nesnelerdeki Verilere Bağlanma (Windows Forms).Bu izlenecek yolda, bu Yardım sayfasında açıklanan nesneleri oluşturur.
Nesnelerine veri yükleme
Bu örnekte, veri TableAdapters kullanarak nesneleri yükleyin.Varsayılan olarak, bir veritabanından veri getirebilir ve veri tabloları doldurmak yöntemleri iki tür TableAdapters oluşturulur.
TableAdapter.Fill Yöntemi, varolan bir veri tablosu döndürülen verilerle doldurur.
TableAdapter.GetData Yöntemi verilerle doldurulan yeni bir veri tablosu verir.
Aranacak özel nesneleriniz veri yüklemek için en kolay yolu olan TableAdapter.GetData yöntemi, döndürülen veri tablosundaki satır koleksiyonu aracılığıyla döngü ve her nesnenin her satırdaki değerlerle doldurmak.Oluşturabileceğiniz bir GetData TableAdapter için eklenen herhangi bir sorgu için doldurulan veri tablo döndüren bir yöntem.
[!NOT]
Visual Studio, TableAdapter sorguların adları Fill ve GetData varsayılan olarak, ancak bu adların herhangi bir geçerli bir yöntem adı değiştirilebilir.
Aşağıdaki örnek, veri tablosundaki satır döngü ve nesne verilerle doldurmak gösterilmiştir:
Tam kod örneği için bkz: İzlenecek yol: Nesnelerdeki Verilere Bağlanma (Windows Forms).
Private Sub LoadCustomers()
Dim customerData As NorthwindDataSet.CustomersDataTable =
CustomersTableAdapter1.GetTop5Customers()
Dim customerRow As NorthwindDataSet.CustomersRow
For Each customerRow In customerData
Dim currentCustomer As New Customer()
With currentCustomer
.CustomerID = customerRow.CustomerID
.CompanyName = customerRow.CompanyName
If Not customerRow.IsAddressNull Then
.Address = customerRow.Address
End If
If Not customerRow.IsCityNull Then
.City = customerRow.City
End If
If Not customerRow.IsContactNameNull Then
.ContactName = customerRow.ContactName
End If
If Not customerRow.IsContactTitleNull Then
.ContactTitle = customerRow.ContactTitle
End If
If Not customerRow.IsCountryNull Then
.Country = customerRow.Country
End If
If Not customerRow.IsFaxNull Then
.Fax = customerRow.Fax
End If
If Not customerRow.IsPhoneNull Then
.Phone = customerRow.Phone
End If
If Not customerRow.IsPostalCodeNull Then
.PostalCode = customerRow.PostalCode
End If
If Not customerRow.Is_RegionNull Then
.Region = customerRow._Region
End If
End With
LoadOrders(currentCustomer)
CustomerBindingSource.Add(currentCustomer)
Next
End Sub
private void LoadCustomers()
{
NorthwindDataSet.CustomersDataTable customerData =
customersTableAdapter1.GetTop5Customers();
foreach (NorthwindDataSet.CustomersRow customerRow in customerData)
{
Customer currentCustomer = new Customer();
currentCustomer.CustomerID = customerRow.CustomerID;
currentCustomer.CompanyName = customerRow.CompanyName;
if (customerRow.IsAddressNull() == false)
{
currentCustomer.Address = customerRow.Address;
}
if (customerRow.IsCityNull() == false)
{
currentCustomer.City = customerRow.City;
}
if (customerRow.IsContactNameNull() == false)
{
currentCustomer.ContactName = customerRow.ContactName;
}
if (customerRow.IsContactTitleNull() == false)
{
currentCustomer.ContactTitle = customerRow.ContactTitle;
}
if (customerRow.IsCountryNull() == false)
{
currentCustomer.Country = customerRow.Country;
}
if (customerRow.IsFaxNull() == false)
{
currentCustomer.Fax = customerRow.Fax;
}
if (customerRow.IsPhoneNull() == false)
{
currentCustomer.Phone = customerRow.Phone;
}
if (customerRow.IsPostalCodeNull() == false)
{
currentCustomer.PostalCode = customerRow.PostalCode;
}
if (customerRow.IsRegionNull() == false)
{
currentCustomer.Region = customerRow.Region;
}
LoadOrders(currentCustomer);
customerBindingSource.Add(currentCustomer);
}
}
Yazılı bir nesneler topluluğu oluşturma
Nesneleriniz için koleksiyon sınıflarını oluşturmak veya tarafından otomatik olarak sağlanan yazılı Koleksiyonlar kullanın BindingSource Bileşeni.
Nesneler için özel koleksiyon sınıfı oluştururken, veri devralmak öneririz BindingList.Bu genel sınıf koleksiyonunuzu yanı sıra, Windows Forms veri bağlama altyapısında bildirimleri göndermek olaylarını yeteneği yönetmek işlevselliği sağlar.
Otomatik olarak oluşturulan koleksiyondaki BindingSource kullanan bir BindingList , yazılı toplama.Uygulamanızın ek işlevsellik gerektirmiyorsa sonra koleksiyonunuzu içinde saklayabilirsiniz BindingSource.Daha fazla bilgi için bkz: List özelliðinin BindingSource sınıfı.
[!NOT]
Koleksiyonunuz temel uygulama tarafından sağlanmayan işlevler gerekliyse BindingList, sonra da gerektiği gibi sınıfa ekleyebilmek için özel bir koleksiyon oluşturmanız gerekir.
Aşağıdaki kod sınıfı türü kesin olarak belirtilmiş bir topluluğu için oluşturulması gösterilmiştir Order nesneleri:
''' <summary>
''' A collection of Orders
''' </summary>
Public Class Orders
Inherits System.ComponentModel.BindingList(Of Order)
' Add any additional functionality required by your collection.
End Class
/// <summary>
/// A collection of Orders
/// </summary>
public class Orders: System.ComponentModel.BindingList<Order>
{
// Add any additional functionality required by your collection.
}
Bir koleksiyon nesneler ekleme
Çağırarak koleksiyona nesneleri ekleme Add , ya da özel koleksiyon sınıfının yöntem BindingSource.
Bir koleksiyonunu kullanarak ekleme konusunda bir örnek için bir BindingSource, bkz: LoadCustomers yönteminde İzlenecek yol: Nesnelerdeki Verilere Bağlanma (Windows Forms).
Nesneleri özel koleksiyonuna ilişkin bir örnek için bkz: LoadOrders yönteminde İzlenecek yol: Nesnelerdeki Verilere Bağlanma (Windows Forms).
[!NOT]
Add Verileri devralmak, yöntemi için özel koleksiyonunuzu otomatik olarak sağlanan BindingList.
Yazılı koleksiyonunda nesneleri ekleme aşağıdaki kod gösterir bir BindingSource:
Dim currentCustomer As New Customer()
CustomerBindingSource.Add(currentCustomer)
Customer currentCustomer = new Customer();
customerBindingSource.Add(currentCustomer);
Aşağıdaki kod devraldığı yazılı bir koleksiyon nesneleri eklemek gösterilmiştir BindingList:
[!NOT]
Bu örnekte Orders koleksiyon özelliği olan Customer nesne.
Dim currentOrder As New Order()
currentCustomer.Orders.Add(currentOrder)
Order currentOrder = new Order();
currentCustomer.Orders.Add(currentOrder);
Nesneleri bir koleksiyondan kaldırma
Nesneleri çağırarak koleksiyondan kaldırma Remove veya RemoveAt , ya da özel koleksiyon sınıfının yöntem BindingSource.
[!NOT]
Remove Ve RemoveAt verileri devralmak, yöntemleri için özel koleksiyonunuzu otomatik olarak sağlanan BindingList.
Aşağıdaki kodu bulun ve yazılı koleksiyonunda nesneleri kaldırmak nasıl gösterir bir BindingSource ile RemoveAt yöntemi:
Dim customerIndex As Integer = CustomerBindingSource.Find("CustomerID", "ALFKI")
CustomerBindingSource.RemoveAt(customerIndex)
int customerIndex = customerBindingSource.Find("CustomerID", "ALFKI");
customerBindingSource.RemoveAt(customerIndex);
Kullanıcıların nesne verilerini görüntüleme
Kullanıcıların nesnelere, verileri görüntülemek için bir nesne veri kaynağı kullanılarak oluşturmak Veri Kaynağı Yapılandırma Sihirbazıve sonra tüm nesneyi ya da ayrı ayrı özellikler formunuzdan sürükleyin Veri kaynakları pencere.
Nesne veri kaynağı oluşturma hakkında daha fazla bilgi için bkz: Nasıl yapılır: Nesnelerdeki Verilere Bağlanma.
Windows formlarında nesnelerden veri görüntüleme hakkında daha fazla bilgi için bkz: Visual Studio'da Verilere Denetimler Bağlama.
Nesne verileri değiştirme
Windows Forms denetimleri veriyle özel nesne verileri düzenlemek için ilişkili denetim (veya doğrudan nesnesinin özelliklerinde) verileri düzenleyin.Veri bağlama mimarisi nesnesindeki verileri güncelleştirir.
Değişiklikleri izleme ve arkası önerilen değişiklikleri özgün değerlerine çalışırken uygulamanız gerektiriyorsa, bu işlevi nesnesi modelinizi uygulamalıdır.Nasıl veri tabloları önerilen değişiklikleri izlemek örnekler için bkz: DataRowState, HasChanges, ve GetChanges.
Verileri veritabanına nesneleri kaydetme
TableAdapter'ın DBDirect yöntemleri, nesneden değerleri ileterek verileri veritabanına kaydedin.
Visual Studio, doğrudan veritabanına karşı yürütülen DBDirect yöntemlerini oluşturur.Bu yöntemler, DataSet ya da DataTable nesnelerini gerektirmez.
TableAdapter DBDirect yöntemi |
Description |
---|---|
TableAdapter.Insert |
Tek sütun değerleri yöntemi parametre olarak geçirmek olanak tanıyan bir veritabanına yeni kayıt ekler. |
TableAdapter.Update |
Varolan bir veritabanındaki kayıtları güncelleştirmeleri.Update yöntemi, yöntem parametreleri olarak özgün ve yeni sütun değerlerini alır.Özgün değerleri özgün kaydı bulmak için kullanılır ve yeni değerler, kaydı güncelleştirmek için kullanılır. TableAdapter.Update Yöntemi bir DataSet'teki değişiklikleri veritabanına geri alarak karşılaştırmak için kullanılan aynı zamanda bir DataSet, DataTable, DataRow, ya da dizi DataRowyöntemi parametre olarak s. |
TableAdapter.Delete |
Yöntem parametreleri olarak geçirilen özgün sütun değerlerine dayalı veritabanı kayıtlarından varolan siler. |
Nesneleri koleksiyonundan veri kaydetmek için (örneğin, bir sonraki için döngü kullanarak) nesnelerinin derlemesini döngü ve değerleri her nesne için TableAdapter'ın DBDirect yöntemlerini kullanarak veritabanına göndermek.
Aşağıdaki örnek, nasıl kullanılacağını gösterir TableAdapter.Insert DBDirect yöntemi doğrudan veritabanına yeni bir müşteri eklemek için:
Private Sub AddNewCustomer(ByVal currentCustomer As Customer)
CustomersTableAdapter.Insert(
currentCustomer.CustomerID,
currentCustomer.CompanyName,
currentCustomer.ContactName,
currentCustomer.ContactTitle,
currentCustomer.Address,
currentCustomer.City,
currentCustomer.Region,
currentCustomer.PostalCode,
currentCustomer.Country,
currentCustomer.Phone,
currentCustomer.Fax)
End Sub
private void AddNewCustomers(Customer currentCustomer)
{
customersTableAdapter.Insert(
currentCustomer.CustomerID,
currentCustomer.CompanyName,
currentCustomer.ContactName,
currentCustomer.ContactTitle,
currentCustomer.Address,
currentCustomer.City,
currentCustomer.Region,
currentCustomer.PostalCode,
currentCustomer.Country,
currentCustomer.Phone,
currentCustomer.Fax);
}
Ayrıca bkz.
Görevler
Nasıl yapılır: Nesnelerdeki Verilere Bağlanma
İzlenecek yol: Nesnelerdeki Verilere Bağlanma (Windows Forms)
Nasıl yapılır: Verileri Bir Nesneden Veritabanına Kaydetme
Nasıl yapılır: Bir TableAdapter ile Veritabanına Doğrudan Erişim
İzlenecek Yol: TableAdapter DBDirect Yöntemleriyle Veri Kaydetme
Kavramlar
Visual Studio'da Verilere Denetimler Bağlama