Bagikan melalui


Kode Pertama ke Database yang Sudah Ada

Panduan langkah demi langkah ini menyediakan pengenalan pengembangan Code First yang menargetkan database yang sudah ada. Code First memungkinkan Anda menentukan model menggunakan kelas C# atau VB.Net. Konfigurasi tambahan opsional dapat dilakukan menggunakan atribut pada kelas dan properti Anda atau dengan menggunakan API yang fasih.

Prasyarat

Anda harus menginstal Visual Studio 2012 atau Visual Studio 2013 untuk menyelesaikan panduan ini.

Anda juga akan memerlukan Alat Kerangka Kerja Entitas versi 6.1 (atau yang lebih baru) untuk Visual Studio yang diinstal. Lihat Mendapatkan Kerangka Kerja Entitas untuk informasi tentang menginstal versi terbaru Alat Kerangka Kerja Entitas.

1. Buat Database yang Sudah Ada

Biasanya ketika Anda menargetkan database yang sudah ada, database tersebut sudah akan dibuat, tetapi untuk panduan ini kita perlu membuat database untuk diakses.

Mari kita lanjutkan dan hasilkan database.

  • Membuka Visual Studio

  • Tampilan -> Penjelajah Server

  • Klik kanan pada Data Koneksi ions -> Tambahkan Koneksi ion...

  • Jika Anda belum tersambung ke database dari Server Explorer sebelum Anda harus memilih Microsoft SQL Server sebagai sumber data

    Select Data Source

  • Koneksi ke instans LocalDB Anda, dan masukkan Blogging sebagai nama database

    LocalDB Connection

  • Pilih OK dan Anda akan ditanya apakah Anda ingin membuat database baru, pilih Ya

    Create Database Dialog

  • Database baru sekarang akan muncul di Server Explorer, klik kanan padanya dan pilih Kueri Baru

  • Salin SQL berikut ke dalam kueri baru, lalu klik kanan pada kueri dan pilih Jalankan

CREATE TABLE [dbo].[Blogs] (
    [BlogId] INT IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (200) NULL,
    [Url]  NVARCHAR (200) NULL,
    CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);

CREATE TABLE [dbo].[Posts] (
    [PostId] INT IDENTITY (1, 1) NOT NULL,
    [Title] NVARCHAR (200) NULL,
    [Content] NTEXT NULL,
    [BlogId] INT NOT NULL,
    CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
    CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);

INSERT INTO [dbo].[Blogs] ([Name],[Url])
VALUES ('The Visual Studio Blog', 'http://blogs.msdn.com/visualstudio/')

INSERT INTO [dbo].[Blogs] ([Name],[Url])
VALUES ('.NET Framework Blog', 'http://blogs.msdn.com/dotnet/')

2. Buat Aplikasi

Untuk menjaga hal-hal sederhana, kita akan membangun aplikasi konsol dasar yang menggunakan Kode Pertama untuk melakukan akses data:

  • Membuka Visual Studio
  • File -> Baru -> Proyek
  • Pilih Windows dari menu sebelah kiri dan Aplikasi Konsol
  • Masukkan CodeFirstExistingDatabaseSample sebagai nama
  • Pilih OK

 

3. Model Reverse Engineer

Kami akan menggunakan Alat Kerangka Kerja Entitas untuk Visual Studio untuk membantu kami menghasilkan beberapa kode awal untuk dipetakan ke database. Alat-alat ini hanya menghasilkan kode yang juga dapat Anda ketik dengan tangan jika Anda mau.

  • Project -> Tambahkan Item Baru...

  • Pilih Data dari menu sebelah kiri lalu ADO.NET Model Data Entitas

  • Masukkan BloggingContext sebagai nama dan klik OK

  • Ini meluncurkan Wizard Model Data Entitas

  • Pilih Kode Pertama dari Database dan klik Berikutnya

    Wizard One CFE

  • Pilih koneksi ke database yang Anda buat di bagian pertama dan klik Berikutnya

    Wizard Two CFE

  • Klik kotak centang di samping Tabel untuk mengimpor semua tabel dan klik Selesai

    Wizard Three CFE

Setelah proses insinyur terbalik menyelesaikan sejumlah item akan ditambahkan ke proyek, mari kita lihat apa yang telah ditambahkan.

File konfigurasi

File App.config telah ditambahkan ke proyek, file ini berisi string koneksi ke database yang ada.

<connectionStrings>
  <add  
    name="BloggingContext"  
    connectionString="data source=(localdb)\mssqllocaldb;initial catalog=Blogging;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"  
    providerName="System.Data.SqlClient" />
</connectionStrings>

Anda akan melihat beberapa pengaturan lain dalam file konfigurasi juga, ini adalah pengaturan EF default yang memberi tahu Kode Terlebih Dahulu tempat membuat database. Karena kami memetakan ke database yang ada, pengaturan ini akan diabaikan dalam aplikasi kami.

Konteks Turunan

Kelas BloggingContext telah ditambahkan ke proyek. Konteks mewakili sesi dengan database, memungkinkan kami untuk mengkueri dan menyimpan data. Konteks mengekspos DbSet<TEntity> untuk setiap jenis dalam model kami. Anda juga akan melihat bahwa konstruktor default memanggil konstruktor dasar menggunakan sintaksis name= . Ini memberi tahu Code First bahwa string koneksi yang akan digunakan untuk konteks ini harus dimuat dari file konfigurasi.

public partial class BloggingContext : DbContext
    {
        public BloggingContext()
            : base("name=BloggingContext")
        {
        }

        public virtual DbSet<Blog> Blogs { get; set; }
        public virtual DbSet<Post> Posts { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
        }
    }

Anda harus selalu menggunakan sintaksis name= saat menggunakan string koneksi dalam file konfigurasi. Ini memastikan bahwa jika string koneksi tidak ada maka Kerangka Kerja Entitas akan melempar daripada membuat database baru berdasarkan konvensi.

Kelas model

Akhirnya, kelas Blog dan Post juga telah ditambahkan ke proyek. Ini adalah kelas domain yang membentuk model kami. Anda akan melihat Anotasi Data yang diterapkan ke kelas untuk menentukan konfigurasi di mana konvensi Kode Pertama tidak akan selaras dengan struktur database yang ada. Misalnya, Anda akan melihat anotasi StringLength di Blog.Name dan Blog.Url karena memiliki panjang maksimum 200 dalam database (default Code First adalah menggunakan panjang maksimum yang didukung oleh penyedia database - nvarchar(max) di SQL Server).

public partial class Blog
{
    public Blog()
    {
        Posts = new HashSet<Post>();
    }

    public int BlogId { get; set; }

    [StringLength(200)]
    public string Name { get; set; }

    [StringLength(200)]
    public string Url { get; set; }

    public virtual ICollection<Post> Posts { get; set; }
}

4. Membaca & Menulis Data

Sekarang setelah kita memiliki model, saatnya untuk menggunakannya untuk mengakses beberapa data. Terapkan metode Utama di Program.cs seperti yang ditunjukkan di bawah ini. Kode ini membuat instans baru dari konteks kami dan kemudian menggunakannya untuk menyisipkan Blog baru. Kemudian menggunakan kueri LINQ untuk mengambil semua Blog dari database yang diurutkan menurut abjad menurut Judul.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Anda sekarang dapat menjalankan aplikasi dan mengujinya.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
.NET Framework Blog
ADO.NET Blog
The Visual Studio Blog
Press any key to exit...

 

Bagaimana jika Perubahan Database Saya?

Wizard Kode Pertama ke Database dirancang untuk menghasilkan kumpulan titik awal kelas yang kemudian dapat Anda ubah dan ubah. Jika skema database Anda berubah, Anda dapat mengedit kelas secara manual atau melakukan insinyur terbalik lain untuk menimpa kelas.

Menggunakan Migrasi Pertama Kode ke Database yang Sudah Ada

Jika Anda ingin menggunakan Migrasi Pertama Kode dengan database yang sudah ada, lihat Migrasi Pertama Kode ke database yang sudah ada.

Ringkasan

Dalam panduan ini kita melihat pengembangan Code First menggunakan database yang sudah ada. Kami menggunakan Alat Kerangka Kerja Entitas untuk Visual Studio untuk merekayasa balik sekumpulan kelas yang dipetakan ke database dan dapat digunakan untuk menyimpan dan mengambil data.