EF.Net Core

FluentAPI

2018-02-08  本文已影响2509人  落地成佛

1、使用FluentAPI

1.1、在OnModelCreating方法下使用

    public class FluentApiDb:DbContext
    {
        public DbSet<Course> Courses { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Course>().Property(o => o.Title).HasMaxLength(20);
        }
    }

1.1、新增一个类,在OnModelCreating中引用

     public class FluentApiDb:DbContext
    {
        public DbSet<Teacher> Teacher { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new TeacherMap());
            modelBuilder.Configurations.Add(new StudentMap());
            base.OnModelCreating(modelBuilder);
        }
    }

通过反射动态加入。利:自动加入,无需人工反复加;弊:影响性能。

  public class FluentApiDb:DbContext
    {
        public DbSet<Teacher> Teacher { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
             var typesToRegister = Assembly.GetExecutingAssembly().GetTypes()
               .Where(type => !String.IsNullOrEmpty(type.Namespace))
               .Where(type => type.BaseType != null && type.BaseType.IsGenericType
                    && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));
                foreach (var type in typesToRegister)
                {
                    dynamic configurationInstance = Activator.CreateInstance(type);
                    modelBuilder.Configurations.Add(configurationInstance);
                }

            base.OnModelCreating(modelBuilder);
        }
    }

2、FluentAPI详细用法

上一篇下一篇

猜你喜欢

热点阅读