Arama butonu
Bu konudaki kullanıcılar: 1 misafir
6
Cevap
324
Tıklama
0
Öne Çıkarma
Entity Framework Oluşturma
S
9 yıl
Onbaşı
Konu Sahibi

Arkadaşlar merhaba
MVC 5 çalışıyorum . Dökümanda entity Framework yapısı anlatılırken SatisContext adında bir class oluşturuluyor. Bu class DbContext sınıfının kalıtımını alıyor. Buraya kadar tamam . Ancak SatisConstructor metodu oluşturulup DbContext metodunun Constructor ı burda çağırılıyor. Aşağıdaki gibi :

public class SatisContext : DbContext
{

public SatisContext () : base ("SatisVeritabanı") { }

}

Burdaki base ifadesiyle mi ordaki constructor çağırılmış oluyor? string tipinde SatisVeritabanı parametresi oluşturuluyor ama burda string olduğu belirtilmiyor, gerekmiyor mu? Ayrıca neden constructor oluşturma gereği duyuluyor?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



V
9 yıl
Binbaşı

base() inherit edilen classın constructor'ı anlamına gelir. içine "SatisVeritabanı" yazarsan o da string parametreli constructor olur. string olduğunu belirtmemesi normal zaten. herhangi bir metodu çağırırken de belirtmezsin çünkü.

constructor overloading deniyor buna.

neden constructora gerek duyuluyor dersen basit cevabı: veri tabanına bağlanmak için. (connectionstring veya db name geçer parametre.)

"ayrıntılı bilgi"https://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.113).aspx





< Bu mesaj bu kişi tarafından değiştirildi VatandA.Ş. -- 8 Kasım 2016; 17:53:32 >
Bu mesaja 1 cevap geldi.
S
9 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Microsoft Specialist

base() inherit edilen classın constructor'ı anlamına gelir. içine "SatisVeritabanı" yazarsan o da string parametreli constructor olur. string olduğunu belirtmemesi normal zaten. herhangi bir metodu çağırırken de belirtmezsin çünkü.

constructor overloading deniyor buna.

neden constructora gerek duyuluyor dersen basit cevabı: veri tabanına bağlanmak için. (connectionstring veya db name geçer parametre.)

"ayrıntılı bilgi"https://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.113).aspx

Daha iyi şekillendi ama hala tam anlayamadığım, neden veri tabanı bağlantısı yapmak için constructor a ihtiyaç duyulduğu. Döküman da ingilizce olduğu için anlamadım, türkçe döküman var mı?


Bu mesaja 1 cevap geldi.
V
9 yıl
Binbaşı

hocam bir nesne oluştururken constructor kullanırız, çünkü belirli değişkenleri varsayılan olarak atamak isteriz veya atıyorum bir Timer'ı obje oluşturulunca ayarlarız. bu da öyle işte DbContext nesnesi oluşturuyor ve bu nesneyi oluştururken gerekli string parametresini geçiriyor. bu sayede o constructor'da gerekli işlemler yapılıp veri tabanına bağlanabiliyoruz.

EF açık kaynak zaten şuradan constructor'lara ve ne işlem yaptığına bakabilirsin:
https://github.com/aspnet/EntityFramework6/blob/master/src/EntityFramework/DbContext.cs

104. satırda string parametreli constructor.
içinde önce string boş mu diye kontrol ediyor:https://github.com/aspnet/EntityFramework6/blob/master/src/Common/Check.cs
sonra da InitializeLazyInternalContext metodunu çağırıyor:
InitializeLazyInternalContext(new LazyInternalConnection(this, nameOrConnectionString));

... böyle bakabilirsin neler yaptığına.

özet olarak veri tabanı bağlantısı kurması gerektiği için obje oluşturulurken nereye bağlanacağını soruyor sana.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @soffmiss
S
9 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Microsoft Specialist

hocam bir nesne oluştururken constructor kullanırız, çünkü belirli değişkenleri varsayılan olarak atamak isteriz veya atıyorum bir Timer'ı obje oluşturulunca ayarlarız. bu da öyle işte DbContext nesnesi oluşturuyor ve bu nesneyi oluştururken gerekli string parametresini geçiriyor. bu sayede o constructor'da gerekli işlemler yapılıp veri tabanına bağlanabiliyoruz.

EF açık kaynak zaten şuradan constructor'lara ve ne işlem yaptığına bakabilirsin:
https://github.com/aspnet/EntityFramework6/blob/master/src/EntityFramework/DbContext.cs

104. satırda string parametreli constructor.
içinde önce string boş mu diye kontrol ediyor:https://github.com/aspnet/EntityFramework6/blob/master/src/Common/Check.cs
sonra da InitializeLazyInternalContext metodunu çağırıyor:
InitializeLazyInternalContext(new LazyInternalConnection(this, nameOrConnectionString));

... böyle bakabilirsin neler yaptığına.

özet olarak veri tabanı bağlantısı kurması gerektiği için obje oluşturulurken nereye bağlanacağını soruyor sana.

DbContext içeriğini bilemediğim için anlayamamışım. Sanki her constructor da veri tabanı bağlantısı yapılıyor gibi anladım önce. Şimdi tamam. Tabii base ifadesiyle inherit edilen sınıftaki constructor ın işaret edildiğini öğrenmiş oldum ayrıca. İlk linkteki sayfada anlaşılıyor ancak ikinci linkteki koddan pek bişey anlamadım maalesef. Ordaki dil c# mı ?


Bu mesaja 1 cevap geldi.
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.