Most Popular

Thứ Hai, 15 tháng 6, 2015

Dữ liệu sau khi tạo bằng code Entity Framework nằm ở đâu?

Phần trước chúng ta đã biết được cách viết code tạo database bằng Entity Framework hôm nay sẽ tiếp tục hướng dẫn làm sao để lấy xem database đã tạo.
Dữ Liệu Của Tôi Ở Đâu ???
Theo quy ước DbContext đã tạo ra một cơ sở dữ liệu cho bạn.
  • Nếu một trường hợp SQL Express địa chỉ có sẵn (được cài đặt theo mặc định với Visual Studio 2010) sau đó Mã đầu tiên đã tạo ra cơ sở dữ liệu trên thể hiện rằng
  • Nếu SQL Express là không có thì Code sẽ thử và sử dụng LocalDb (được cài đặt theo mặc định với Visual Studio 2012)
  • Các cơ sở dữ liệu được đặt tên theo tên đầy đủ của các Context gốc, trong trường hợp của chúng tôi đó là CodeFirstNewDatabaseSample.BloggingContext
Đây là những chỉ các công ước mặc định và có những cách khác nhau để thay đổi các cơ sở dữ liệu rằng Mã Đầu tiên sử dụng, biết thêm thông tin là có sẵn trong các Làm thế nào DbContext phát hiện ra mô hình Model và Database Connection chủ đề.

Bạn có thể kết nối với cơ sở dữ liệu này sử dụng Server Explorer trong Visual Studio
  • View -> Server Explorer
  • Right click on Data Connections and select Add Connection…
  • Nếu bạn chưa kết nối với một cơ sở dữ liệu từ Server Explorer trước khi bạn sẽ cần phải chọn Microsoft SQL Server như các nguồn dữ liệu

    • Microsoft SQL Server selected as the data source
    • Kết nối với một trong hai LocalDb ((localdb) \ v11.0) hoặc SQL Express (. \ SQLEXPRESS), tùy thuộc vào một trong những bạn đã cài đặt
      Connect to Blogging database on (localdb)\v11.0Connect to Blogging database on .\SQLEXPRESS

    We can now inspect the schema that Code First created.
    Schema displayed in Server Explorer
    DbContext làm việc ra những gì các lớp học để đưa vào mô hình bằng cách nhìn vào các tính chất DbSet, chúng định nghĩa. Sau đó sử dụng các thiết lập mặc định của các qui luật luật đầu tiên để xác định bảng và tên cột, xác định kiểu dữ liệu, tìm từ khóa chính, vv Sau đó trong hướng dẫn này chúng ta sẽ xem xét làm thế nào bạn có thể ghi đè lên các qui định này.

    5. Đối phó với Model Thay đổi

    Bây giờ là thời gian để thực hiện một số thay đổi cho mô hình của chúng tôi, khi chúng tôi thực hiện những thay đổi này, chúng tôi cũng cần phải cập nhật các giản đồ cơ sở dữ liệu. Để làm điều này chúng ta sẽ sử dụng một tính năng gọi là Code Migrations, hoặc Migrations cho ngắn.
    Migrations cho phép chúng ta có một tập hợp có thứ tự các bước mô tả làm thế nào để nâng cấp (và hạ cấp) giản đồ cơ sở dữ liệu của chúng tôi. Mỗi bước, được biết đến như là một di chuyển, có chứa một số mã có mô tả các thay đổi được áp dụng.
    Bước đầu tiên là bật Mã Migrations tiên cho BloggingContext của chúng tôi.
    • Tools -> Library Package Manager -> Package Manager Console
    • Chạy lệnh Enable-Migrations command trong Package Manager Console
    • Một thư mục Migrations mới đã được thêm vào dự án của chúng ta có chứa hai mục:
      • Configuration.cs – Tập tin này có chứa các thiết lập mà Migrations sẽ sử dụng để di chuyển BloggingContext. Chúng tôi không cần phải thay đổi bất cứ điều gì cho giới thiệu này, nhưng đây là nơi bạn có thể chỉ định dữ liệu hạt giống, các nhà cung cấp đăng ký cho cơ sở dữ liệu khác, thay đổi không gian tên di cư này được tạo ra trong vv
      • <timestamp>_InitialCreate.cs – Đây là di chuyển đầu tiên của bạn, nó đại diện cho sự thay đổi đó đã được áp dụng cho các cơ sở dữ liệu để lấy nó từ là một cơ sở dữ liệu trống để một trong đó bao gồm các bảng Blog và bài viết. Mặc dù chúng ta để cho Code tự động tạo ra các bảng cho chúng ta, bây giờ mà chúng tôi đã chọn tham gia vào Migrations họ đã được chuyển đổi thành một Migration. Mã Đầu tiên cũng đã được ghi lại trong cơ sở dữ liệu địa phương của chúng tôi mà di cư này đã được áp dụng. Các dấu thời gian trên tên tập tin được sử dụng cho các mục đích đặt hàng.

      Bây giờ chúng ta hãy làm một sự thay đổi mô hình của chúng tôi, thêm một tài sản liên kết để các class Blog:
    public class Blog 
    { 
        public int BlogId { get; set; } 
        public string Name { get; set; } 
        public string Url { get; set; } 
     
        public virtual List<Post> Posts { get; set; } 
    }
    • Chạy Add-Migration AddUrl command trong Package Manager Console.

      Việc kiểm tra lệnh Add-Migration trú đối với những thay đổi kể từ khi di chuyển gần nhất của bạn và giàn giáo một di chuyển mới với bất kỳ thay đổi nào được tìm thấy. Chúng tôi có thể cung cấp cho sự di cư của một tên; trong trường hợp này, chúng tôi đang kêu gọi sự di cư 'AddUrl'.

      Mã scaffolded nói rằng chúng ta cần phải thêm một cột Url, có thể chứa dữ liệu chuỗi, để bàn dbo.Blogs. Nếu cần thiết, chúng ta có thể chỉnh sửa mã scaffolded nhưng điều đó không cần thiết trong trường hợp này.
    namespace CodeFirstNewDatabaseSample.Migrations 
    { 
        using System; 
        using System.Data.Entity.Migrations; 
         
        public partial class AddUrl : DbMigration 
        { 
            public override void Up() 
            { 
                AddColumn("dbo.Blogs""Url", c => c.String()); 
            } 
             
            public override void Down() 
            { 
                DropColumn("dbo.Blogs""Url"); 
            } 
        } 
    }
    
    
    
    Chạy lệnh Update-Database trong Package Manager Console.Lệnh này sẽ áp dụng bất kỳ di cư cấp phát cho các cơ sở dữ liệu. Di cư InitialCreate của chúng tôi đã được áp dụng để di cư sẽ chỉ áp dụng chuyển đổi AddUrl mới của chúng tôi.
    
    Tip: You can use the –Verbose switch when calling Update-Database to see the SQL that is being executed against the database.

    Cột Url mới được thêm vào bảng Blogs trong cơ sở dữ liệu:
    Schema displayed in Server Explorer 

    6. Data Annotations

    Vì vậy, đến nay chúng tôi đã chỉ cho EF khám phá các mô hình sử dụng công ước mặc định của nó, nhưng có sẽ có lần khi các lớp học của chúng tôi không tuân theo các công ước và chúng tôi cần để có thể thực hiện cấu hình thêm. Có hai lựa chọn cho điều này; chúng ta sẽ nhìn vào chú thích số liệu trong phần này và sau đó các API thông thạo các phần tiếp theo.

    Hãy thêm một lớp người dùng để mô hình của chúng ta
    public class User 
    { 
        public string Username { get; set; } 
        public string DisplayName { get; set; } 
    }
    • Chúng ta cũng cần thêm một bộ tới Context gốc của chúng ta
    public class BloggingContext : DbContext 
    { 
        public DbSet<Blog> Blogs { get; set; } 
        public DbSet<Post> Posts { get; set; } 
        public DbSet<User> Users { get; set; } 
    }
    • Nếu chúng ta cố gắng thêm một di cư chúng tôi nhận được một lỗi nói rằng "EntityType 'User' không có trọng điểm quy định. Xác định phím cho EntityType này. "Vì EF không có cách nào để biết Username mà nên là khóa chính cho tài khoản.
    • Chúng ta sẽ sử dụng chú thích dữ liệu bây giờ vì vậy chúng ta cần phải thêm một tuyên bố sử dụng ở đầu Program.cs
    using System.ComponentModel.DataAnnotations;
    • Bây giờ chú thích các Tên đăng nhập dữ liệu để xác định rằng nó là chìa khóa chính
    public class User 
    { 
        [Key] 
        public string Username { get; set; } 
        public string DisplayName { get; set; } 
    }
    • Sử dụng lệnh Add-Migration adduser để bộ khung di chuyển sang áp dụng các thay đổi đối với cơ sở dữ liệu
    • Chạy lệnh Update-Cơ sở dữ liệu để áp dụng cập nhật mới đến cơ sở dữ liệu
    Bảng mới được thêm vào cơ sở dữ liệu:
    Schema displayed in Server Explorer

    Danh sách đầy đủ của các chú thích được hỗ trợ bởi EF là:

    7. Fluent API

    Trong phần trước chúng ta đã xem xét sử dụng chú thích dữ liệu để bổ sung hoặc ghi đè lên những gì đã được phát hiện theo quy ước. Một cách khác để cấu hình các mô hình là thông qua các API thông thạo Code.
    Hầu hết các cấu hình mô hình có thể được thực hiện bằng cách sử dụng các chú thích dữ liệu đơn giản. Các API thông thạo là một cách nâng cao hơn quy định cụ thể cấu hình mô hình mà bao gồm tất cả mọi thứ mà chú thích dữ liệu có thể làm thêm vào một số cấu hình nâng cao hơn không thể với chú thích dữ liệu. Chú thích dữ liệu và các API thông thạo có thể được sử dụng cùng nhau.
    Để truy cập vào các API thông thạo bạn ghi đè lên các phương pháp OnModelCreating trong DbContext. Hãy nói rằng chúng tôi muốn đổi tên các cột đó User.DisplayName được lưu trữ vào display_name.
    Ghi đè phương pháp OnModelCreating trên BloggingContext với đoạn mã sau
    public class BloggingContext : DbContext 
    { 
        public DbSet<Blog> Blogs { get; set; } 
        public DbSet<Post> Posts { get; set; } 
        public DbSet<User> Users { get; set; } 
     
        protected override void OnModelCreating(DbModelBuilder modelBuilder) 
        { 
            modelBuilder.Entity<User>() 
                .Property(u => u.DisplayName) 
                .HasColumnName("display_name"); 
        } 
    }
    • Sử dụng lệnh Add-Migration ChangeDisplayName để giàn giáo di trú sang áp dụng các thay đổi đối với cơ sở dữ liệu.
    • Chạy lệnh Update-Cơ sở dữ liệu để áp dụng các di dân mới đến cơ sở dữ liệu.

    Cột DisplayName nay được đổi tên thành display_name:
    Schema displayed in Server Explorer

    Summary

    Trong hướng dẫn này chúng ta nhìn vào xây dựng Quy tắc đầu tiên sử dụng một cơ sở dữ liệu mới. Chúng tôi xác định một mô hình sử dụng các lớp học sau đó sử dụng mô hình đó để tạo ra một cơ sở dữ liệu và lưu trữ và lấy dữ liệu. Một khi cơ sở dữ liệu đã được tạo ra, chúng tôi sử dụng Code Migrations để thay đổi giản đồ như mô hình của chúng tôi phát triển. Chúng tôi cũng thấy làm thế nào để cấu hình một mô hình sử dụng chú thích dữ liệu và các API thạo.
Share this post
  • Share to Facebook
  • Share to Twitter
  • Share to Google+
  • Share to Stumble Upon
  • Share to Evernote
  • Share to Blogger
  • Share to Email
  • Share to Yahoo Messenger
  • More...

0 nhận xét

 
© 2011 Share Tài Liệu
Posts RSSComments RSS
Back to top