18 Temmuz 2014 Cuma

MVC Film Uygulaması - Connection String Oluşturma ve SQL Server Local DB Üzerinde Çalışma (Part IV)

Önceki yazımızda oluşturduğumuz FilmDBContext sınıfı, veritabanına erişimi ve veritabanı kayıtları ile Film nesnelerinin eşleştirilmesini sağlıyordu. Haklı olarak aklımıza şu soru gelebilir : "Peki bağlanacağı veritabanını nasıl belirliyor?". Aslında hangi veritabanının kullanılacağını açıkça belirlemek zorunda değiliz. Entity Framework varsayılan olarak LocalDB'yi kullanabilir. Fakat bu yazımızda, uygulamamızdaki Web.config dosyası içerisine bir connection string nasıl eklenir onu göreceğiz.

SQL Server Express LocalDB

LocalDB, SQL Server Express Database Engine'inin hafifletilmiş bir sürümüdür. İsteğe bağlı olarak başlatılır ve kullanıcı modunda çalışır. LocalDB, .mdf dosya türündeki veritabanlarında çalışmanızı sağlayan, SQLServer Express'in özel bir çalıştırma moduna sahiptir. Genellikle bir web projesinde LocalDB veritabanının dosyaları, App_Data klasöründe tutulur.

SQL Server Express ile web uygulamalarnın oluşturulması önerilmez. Hele ki LocalDB, bir web uygulamasının üretiminde kullanılmamalıdır. Çünkü, IIS ile çalışmak için tasarlanmamıştır. Ancak, bir LocalDB veritabanı kolaylıkla SQL Server'a veya SQL Azure'a taşınabilir. Ve diğer bir kolaylığı ise Visual Studio 2013 ve 2012'de LocalDB, varsayılan olarak yüklü halde gelmesidir.

Aşağıda gösterilen Web.config dosyasını açalım. (Views klasöründe de var onu açmayalım karışıklık olmasın)


<configuration> elemanının içerisine <configsections>'ın bittiği yere <connectionstrings> elemanını aşağıdaki şekilde yerleştirelim:

Aşağıdaki connection string'i yerleştirelim:
<connectionStrings>
    <add name="FilmDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Filmler.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
Eklenmiş haliyle aşağıdaki gibi olmalıdır:


Connection string'in adı DbContext sınıfının adı ile aynı olmalıdır.
using System;
using System.Data.Entity;

namespace MVCFilm.Models
{
    public class Film
    {
        public int ID { get; set; }
        public string Baslik { get; set; }
        public DateTime CikisTarihi { get; set; }
        public string Tipi { get; set; }
        public decimal Fiyati { get; set; }
    }

    public class FilmDBContext : DbContext
    {
        public DbSet<Film> Filmler { get; set; }
    }
}
Aslında FilmDBContext connection string'ini oluşturmamıza gerek yoktu. Çünkü bir connection string belirlemeseydik EF yine de kullanıcılar dizininde DbContext sınıfı (FilmDBContext) ile aynı isimde bir LocalDB veritabanı oluşturacaktı. Veritabanımıza da .mdf uzantısı ile istediğimiz ismi verebiliriz. Örneğin, Filmlerim.mdf ismini verebilmemiz mümkün.

Sonraki yazımızda, film verilerini görüntüleyen ve kullanıcıların yeni film listelerini oluşturmasını sağlayan bir FilmlerController sınıfı oluşturacağız.


Kaynaklar: ASP.NET

Hiç yorum yok:

Yorum Gönder