none
Ben iki tablo arasinda parent/child ilişkisi yaratmak istiyorum. RRS feed

  • Soru

  • DataSetlerde bunu nasıl yapacağım biliyorum. (Ado.Net Disconnected layer)

    DataRelation dr = new DataRelation("CustomerOrder",
    
                     autoLotDS.Tables["Customers"].Columns["CustID"],
    
                     autoLotDS.Tables["Orders"].Columns["CustID"]);
    
    Sonra da işte GetCHildRow() ve ya GetParentRow() metodlarıyla diğer tabloda gereken row-dakı verilere ulaşıyoruz.
    Şimdi ben bunu runtime da yapmk isityirum. Bu programda tüm databse-i, içindeki tablolarl runtime-da oluşturuyor. E ben bu parent/child ilişkiini de oluşturmalıyım. AYrica bu ilişkiyi programmatically oluşturduktan sonra, GetChildRw ve ya GetParentRow() -nun yerine hangi query-yi kullanmam gerek?

    Ama şimdi Connected Layer kullanmak istiyorum.


    MICROSOFT
    19 Ağustos 2011 Cuma 06:58

Yanıtlar

Tüm Yanıtlar

  • sql sorgusunu soruyorsanız aşağıdaki gibidir. 
    ALTER TABLE Orders
    ADD CONSTRAINT FK_CustomerOrder
    FOREIGN KEY (CustID) REFERENCES Customers(CustID)
    


    http://www.mehmetx.com
    19 Ağustos 2011 Cuma 07:35
  • Merhaba,
     SQL server tarafında da ilişki bundan cok farklı değildir.Datarelation sınıfı constructorında aldığı 3 parametre ile(relationName,parentCol,childCol) sql seeve tarafında foreign key olusturarak yapabilirsiniz. Örneğin aşağıdaki gibi iki tablo arasında relation tanımlayabilirsiniz.

    create table orders(orderid int IDENTITY(1,1) primary key,customerid int,productid int)
    
    create table customer(customerid int IDENTITY(1,1) primary key,customername varchar(50))
    
    ALTER TABLE orders 
    ADD FOREIGN KEY (customerid) REFERENCES customer(customerid);
    
    


    19 Ağustos 2011 Cuma 07:45
  • yani şimdi Parent\Child ilişkisi oluşturmak için Foreigh Key sadece yetiyor mu?  Hiç öyle sanmıyordum. Yoksa öyle mi? Bi de aslında benim amacım şu:

    Ben bi program yapıyorum. Orada Register ve Login butttonları olacak. Ben Register-e tikladığımda benim orada verceğim isimde bir yeni databse yaranacak. Onun içinde de 2 table olucak. Yni tüm bunlar runtime-da olucak. Ben istiyorum ki, table-lar arasında Ado.Net-deki GetcChildRow() ve ya GetParentRow() tarzında ilişki kurayım. Mesesla bakın bunlar o 3 table, karşılarındakılarda columnlar.

    Games:  Name, Developer, Distributor.

    Scores: Name, Graphics, Sound, Gameplay.

    URİs: Name, ReviewURI, VideoReviewURI.

     

    Şimdi ben istiyorum ki, programda "İNFO" simili buttona tıkladığmda bu oyunla ilgili bilgileri bana getirsinş İlk sorum bunu nasıl yapmalıyım? Yani ilişkiyi programmatically nasıl kurmalıyım? her halde SQl query-yi ExecuteNonQuery-den çağırmam gerek. Peki bu query nasıl olamlı? Sadece Join olması yetermi? Yoksa Parent/Child -mi olması gerekiyor.  Bi de Foreign Key var ya.... O ne işe yarıyor. Sadece Primary Key-in bulunduğu tabloda, mesela eğer Name primary-se Games tablosunda, Scores ve URİs-de de bu oyunun isminin bulunmasını şart koşuyor. Dimi? 

     

    Anlayacağınız kafam bir az karışık. Ben aslında bublari VS2010-da rahatlııkla yapıyorum DataSetlerle. Sonra da işte DtaSet-den Database-deki table-a update vere bilirim. Ama bunların runtime-da oluşmasını istiyorum. 

     

    Teşekkür ederim. Bu konuyla ilgili artık 4 gündür ilgileniyorum. Yardım ederseniz sevinirm. Ayrıca eğer bir yerden okumam gerkeliyse, linkini de vere bilirsiniz okumam için.


    MICROSOFT

    19 Ağustos 2011 Cuma 07:54
  • Tamam. Bende böyle düşünmüştüm bir-iki yerde okuduktan sonra. Ama tam olarak böyle bir şey görmk istiyordum ki, içim rahatlasın.  Peki GetChildRow() ve ya GetParetRow() tarzında nasıl ulaşa bilirim Bana gerekli olan diğer bir tablodakı row-a?

     

    Tesekkur ederim.


    MICROSOFT
    19 Ağustos 2011 Cuma 07:59
    • Yanıt Olarak İşaretleyen Ferhad Cebiyev 19 Ağustos 2011 Cuma 08:09
    19 Ağustos 2011 Cuma 08:01
  • Galiba istediğim buydu. :))  Teşekkür ederim. Şimdi ben bi de kendim deneyeyeim. İnşallah bi sorun çıkmaz. Eğer çıkarsa da, buraya yazarım.) Yine de Teşekkür ederim.

     

    Ama bi şeyde sorayım, Foreign Key-i tanimlamam gereklimi bu İnner Join-i kullanmam için?


    MICROSOFT

    19 Ağustos 2011 Cuma 08:10