• Code First实体与数据表之间的映射关系


    在Code First方法中,还可以通过Fluent API的方式来处理实体与数据表之间的映射关系。

    要使用Fluent API必须在构造自定义的DbContext时,重写OnModelCreating方法,在此方法体内调用Fluent API。

    如下面代码所示:

    public class BlogDbContext : DbContext
    {
    public BlogDbContext()
    : base("name=BlogDB2005")
    {

    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

    //do something
    base.OnModelCreating(modelBuilder);
    }
    }
    //下面来看一些简单的例子
    //主键
    modelBuilder.Entity<BlogUser>().HasKey(user => user.UserId);
    //联合主键
    //联合主键
    modelBuilder.Entity<BlogUser>().HasKey(user => new { user.UserId, user.BlogName });
    //字段非空
    //要求属性必填
    modelBuilder.Entity<BlogUser>().Property(user => user.BlogName).IsRequired();
    //设定字段最大长度
    modelBuilder.Entity<BlogUser>().Property(user => user.BlogName).HasMaxLength(20);
    //设置复杂属性,相当数据特性中的ComplexType
    modelBuilder.ComplexType<Address>();
    //属性字段不映射到数据表字段,相当于数据特性中的NotMapped
    modelBuilder.Entity<BlogUser>().Ignore(user => user.MyProperty);
    //设置字段是否自动增长
    //设置自动增长,如不需要自动增长,则设为 DatabaseGeneratedOption.None
    modelBuilder.Entity<BlogUser>().Property(user => user.UserId)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    //设置外键
    ///产生一对多的关系
    modelBuilder.Entity<Post>()
    .HasRequired(p =>p.BlogUser)
    .WithMany(user => user.Posts)
    .HasForeignKey(p => p.UserId);

    ///与上面等效
    //modelBuilder.Entity<BlogUser>()
    // .HasMany(user => user.Posts)
    // .WithRequired(p => p.BlogUser)
    // .HasForeignKey(p => p.UserId);

    //设定实体映射到数据库中的表名
    modelBuilder.Entity<BlogUser>().ToTable("MyUser");
    //设置实体属性映射到数据库中的列名
    modelBuilder.Entity<BlogUser>()
    .Property(user => user.Description)
    .HasColumnName("userDescription")
    .HasColumnType("ntext");





  • 相关阅读:
    手动卸载Office2010
    css盒子模型和定位
    [转]Mysql 存储过程和函数区别
    (转载)今天面试两个人的感受
    配置apache和php mysql的一些问题
    css position[转
    drools7 (四、FactHandle 介绍)
    drools7 (三、kmodule 介绍)
    drools7 (二、agenda-group 的使用)
    drools7 (一、最简单的例子)
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2369422.html
Copyright © 2020-2023  润新知