Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Entity Framework'ün hangi veritabanı bağlantısının kullanılacağını nasıl keşfedeceğini ve nasıl değiştireceğini kapsar. Code First ve EF Designer ile oluşturulan modeller ele alınmıştır.
Uyarı
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Genellikle bir Entity Framework uygulaması DbContext'ten türetilen bir sınıf kullanır. Bu türetilmiş sınıf, denetlemek için temel DbContext sınıfındaki oluşturuculardan birini çağırır:
- Bağlamın bir veritabanına nasıl bağlandığını, yani bir bağlantı dizesi nasıl bulunup kullanıldığını.
- Bağlamın Code First kullanarak bir modeli hesaplayıp hesaplamadığı veya EF Designer ile oluşturulan bir modeli yükleyip yüklemediği.
- Ek gelişmiş seçenekler
Aşağıdaki parçalar, DbContext oluşturucularının kullanılabilmesinin bazı yollarını gösterir.
Kurala göre bağlantıyla Code First kullanma
Uygulamanızda başka bir yapılandırma yapmadıysanız, DbContext'te parametresiz oluşturucunun çağrılması, DbContext'in kural tarafından oluşturulan bir veritabanı bağlantısıyla Code First modunda çalışmasına neden olur. Örneğin:
namespace Demo.EF
{
public class BloggingContext : DbContext
{
public BloggingContext()
// C# will call base class parameterless constructor by default
{
}
}
}
Bu örnekte DbContext, türetilmiş bağlam sınıfınızın ad alanı nitelenmiş adını (Demo.EF.BloggingContext) veritabanı adı olarak kullanır ve SQL Express veya LocalDB kullanarak bu veritabanı için bir bağlantı dizesi oluşturur. Her ikisi de yüklüyse SQL Express kullanılır.
Visual Studio 2010 varsayılan olarak SQL Express'i, Visual Studio 2012 ve sonraki sürümleri de LocalDB'i içerir. Yükleme sırasında EntityFramework NuGet paketi hangi veritabanı sunucusunun kullanılabilir olduğunu denetler. NuGet paketi, kurala göre bağlantı oluştururken Code First tarafından kullanılan varsayılan veritabanı sunucusunu ayarlayarak yapılandırma dosyasını güncelleştirir. SQL Express çalışıyorsa kullanılır. SQL Express kullanılamıyorsa LocalDB varsayılan olarak kaydedilir. Varsayılan bağlantı fabrikası için zaten bir ayar içeriyorsa yapılandırma dosyasında hiçbir değişiklik yapılmaz.
Kurala ve belirtilen veritabanı adına göre bağlantıyla Code First kullanma
Uygulamanızda başka bir yapılandırma yapmadıysanız, dbContext'te dize oluşturucusunu kullanmak istediğiniz veritabanı adıyla çağırmak, DbContext'in bu adın veritabanına kuralıyla oluşturulan bir veritabanı bağlantısıyla Code First modunda çalışmasına neden olur. Örneğin:
public class BloggingContext : DbContext
{
public BloggingContext()
: base("BloggingDatabase")
{
}
}
Bu örnekte DbContext, veritabanı adı olarak "BloggingDatabase" kullanır ve SQL Express (Visual Studio 2010 ile yüklenir) veya LocalDB (Visual Studio 2012 ile yüklenir) kullanarak bu veritabanı için bir bağlantı dizesi oluşturur. Her ikisi de yüklüyse SQL Express kullanılır.
app.config/web.config dosyasında bağlantı dizesi ile Code First kullanma
app.config veya web.config dosyanıza bir bağlantı dizesi yerleştirmeyi seçebilirsiniz. Örneğin:
<configuration>
<connectionStrings>
<add name="BloggingCompactDatabase"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=Blogging.sdf"/>
</connectionStrings>
</configuration>
Bu, DbContext'e SQL Express veya LocalDB dışında bir veritabanı sunucusu kullanmasını söylemenin kolay bir yoludur; yukarıdaki örnek bir SQL Server Compact Edition veritabanını belirtir.
bağlantı dizesi adı bağlamınızın adıyla eşleşiyorsa (ad alanı niteliğine sahip veya olmayan), parametresiz oluşturucu kullanıldığında DbContext tarafından bulunur. bağlantı dizesi adı bağlamınızın adından farklıysa DbContext'e bağlantı dizesi adını DbContext oluşturucusundan geçirerek Code First modunda bu bağlantıyı kullanmasını söyleyebilirsiniz. Örneğin:
public class BloggingContext : DbContext
{
public BloggingContext()
: base("BloggingCompactDatabase")
{
}
}
Alternatif olarak, DbContext oluşturucusna geçirilen dize için "name=<bağlantı dizesi name>" formunu kullanabilirsiniz. Örneğin:
public class BloggingContext : DbContext
{
public BloggingContext()
: base("name=BloggingCompactDatabase")
{
}
}
Bu form, yapılandırma dosyanızda bağlantı dizesi bulunmasını beklediğinizi açıkça gösterir. Verilen ada sahip bir bağlantı dizesi bulunamazsa bir özel durum oluşturulur.
App.config/web.config dosyasında bağlantı dizesi ile Önce Veritabanı/Model
EF Designer ile oluşturulan modeller, modelinizin zaten mevcut olması ve uygulama çalıştırıldığında koddan oluşturulmamasından farklıdır. Model genellikle projenizde bir EDMX dosyası olarak bulunur.
Tasarımcı app.config veya web.config dosyanıza bir EF bağlantı dizesi ekler. Bu bağlantı dizesi, EDMX dosyanızdaki bilgileri bulma hakkında bilgi içermesi için özeldir. Örneğin:
<configuration>
<connectionStrings>
<add name="Northwind_Entities"
connectionString="metadata=res://*/Northwind.csdl|
res://*/Northwind.ssdl|
res://*/Northwind.msl;
provider=System.Data.SqlClient;
provider connection string=
"Data Source=.\sqlexpress;
Initial Catalog=Northwind;
Integrated Security=True;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient"/>
</connectionStrings>
</configuration>
EF Tasarımcısı, dbContext oluşturucusunun bağlantı dizesi adını geçirerek DbContext'e bu bağlantıyı kullanmasını bildiren bir kod da oluşturur. Örneğin:
public class NorthwindContext : DbContext
{
public NorthwindContext()
: base("name=Northwind_Entities")
{
}
}
Bağlantı dizesi kullanılacak modelin ayrıntılarını içeren bir EF bağlantı dizesi olduğundan DbContext mevcut modeli yüklemeyi bilir (koddan hesaplamak için Önce Kod kullanmak yerine).
Diğer DbContext oluşturucu seçenekleri
DbContext sınıfı, daha gelişmiş senaryolara olanak tanıyan diğer oluşturucuları ve kullanım desenlerini içerir. Bunlardan bazıları şunlardır:
- DbModelBuilder sınıfını kullanarak bir DbContext örneği örneği oluşturmadan Code First modeli oluşturabilirsiniz. Bunun sonucu bir DbModel nesnesidir. Ardından, DbContext örneğinizi oluşturmaya hazır olduğunuzda bu DbModel nesnesini DbContext oluşturucularından birine geçirebilirsiniz.
- Veritabanı veya bağlantı dizesi adı yerine DbContext'e tam bağlantı dizesi geçirebilirsiniz. Varsayılan olarak bu bağlantı dizesi System.Data.SqlClient sağlayıcısıyla kullanılır; bu, bağlama farklı bir IConnectionFactory uygulaması ayarlanarak değiştirilebilir. Database.DefaultConnectionFactory.
- Var olan bir DbConnection nesnesini bir DbContext oluşturucusna geçirerek kullanabilirsiniz. Bağlantı nesnesi Bir EntityConnection örneğiyse, önce Kod kullanarak bir modeli hesaplamak yerine bağlantıda belirtilen model kullanılır. Nesne başka bir türün örneğiyse (örneğin, SqlConnection), bağlam bunu Code First modu için kullanır.
- Var olan bir ObjectContext'i bir DbContext oluşturucusna geçirerek var olan bağlamı kaydıran bir DbContext oluşturabilirsiniz. Bu, ObjectContext kullanan ancak uygulamanın bazı bölümlerinde DbContext'in avantajlarından yararlanmak isteyen mevcut uygulamalar için kullanılabilir.