文章出處

在前面的部分中,我們學習了Code-First默認約定,Code-First使用默認的約定,根據你的領域類,然后生成概念模型。

Code-First模式,發起了一種編程模式:約定大于配置。這也就是說,當你需要的時候,你可以重寫這些約定,通過配置你的領域類。這里有兩種方式來配置你的領域類實體:

  1. DataAnnotations(數據注解)
  2. Fluent API(姑且翻譯為:流暢API)

數據注解:

數據注解是基于配置的簡單特性,你可以應用到你的領域類或者其屬性中。你可能會發現大多數的特性都在這個命令空間下面:

System.ComponentModel.DataAnnotations, 然而,數據注解提供的特性僅僅是Fluent API配置的一部分子集而已,所以,如果你,在數據注解中,沒有找到的屬性,可以使用Fluent API來配置。

下面的例子中,是一個簡單使用數據注解的例子:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF2
{
    [Table("StudentInfo")]
   public class Student
    {
        [Key]
        public int SID { get; set; }

        [Column("Name",TypeName="ntext")]
        [MaxLength(20)]
        public string StudentName { get; set; }

        [NotMapped()]
        public int? Age { get; set; }

        public int StdId { get; set; }

        [ForeignKey("StdId")]
        public virtual Standard Standard { get; set; }

    }
}

生成的數據庫是這樣的。

 

Fluent API

Fluent API配置,利用EF從你的實體類中構建模型,你可以注入這個配置,通過重寫DbContext類的“OnModelCreating”方法,例如下面的:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF2
{
   public class DbContextClass:DbContext
    {
       public DbContextClass() : base("Constr") { }
       public DbSet<Student> Students { get; set; }
       public DbSet<Standard> Standards { get; set; }

       protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {
//這里面配置領域類實體,通過使用Dluent API Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContextClass>()); base
.OnModelCreating(modelBuilder); } } }

You can use modelBuilder, which is an object of DbModelBuilder class, to configure domain classes.

你可以使用modelBuider,他是DBModelBuilder類的對象,用來配置領域類的。

Let's see DataAnnotation and Fluent API in detail in the next chapter.

我們在后面的章節中將會詳細的了解數據注解和Fluent API。

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()