• 【译】第8节---EF Code First中配置类


    原文:http://www.entityframeworktutorial.net/code-first/configure-classes-in-code-first.aspx

    前面的章节中我们知道, Code-First使用默认约定从您的域类构建概念模型。Code First利用一种称为【约定大于配置】的编程模式。这意味着您可以通过配置域类来为EF提供所需的信息来覆盖这些约定。

    有两种配置域类的方法:

    1. DataAnnotations(数据注解)
    2. Fluent API

    DataAnnotation(数据注解)

    DataAnnotation是一个简单的基于属性的配置,您可以将其应用于您的域类及其属性。您可以在System.ComponentModel.DataAnnotations命名空间中找到大部分属性。但是,DataAnnotation仅提供Fluent API配置的一个子集。

    因此,如果在DataAnnotation中找不到某些属性,则必须使用Fluent API进行配置。

    下面是在学生类中使用的DataAnnotation的示例:

    [Table("StudentInfo")]
    public class Student
    {
        public 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”方法来注入配置,如下所示:

    public class SchoolDBContext: DbContext 
    {
        public SchoolDBContext(): base("SchoolDBConnectionString") 
        {
        }
    
        public DbSet<Student> Students { get; set; }
        public DbSet<Standard> Standards { get; set; }
        public DbSet<StudentAddress> StudentAddress { get; set; }
            
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //Configure domain classes using Fluent API here
    
            base.OnModelCreating(modelBuilder);
        }
    }

    您可以使用DbModelBuilder类的对象modelBuilder来配置域类。

    后面的章节将详细介绍DataAnnotation和Fluent API。

  • 相关阅读:
    Codeforces 377 A Maze【DFS】
    分糖果 5.0升级版
    poj_1201_Intervals
    NOIP2016全国信息学分区联赛提高组第二试 组合问题
    NOIP2016全国信息学分区联赛提高组第一试 玩具迷题
    NOIP 2016提高组总结
    2016年提高组模拟试题(20161105)Mahjong
    打鼹鼠
    2015年普级组模拟试题 小X的矩阵
    交汇的火力
  • 原文地址:https://www.cnblogs.com/talentzemin/p/7193927.html
Copyright © 2020-2023  润新知