简体   繁体   中英

OnModelCreating Entity Framework Core

This code is in MVC , I need to do something like this but in ASP.net Core , using Entity Framework Core , or with DataAnnotations (I've changed the parameter already from DbModelBuilder(MVC Entity Framework) to ModelBuilder(Entity Framework Core) )

 protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); //error: Conventions is not recognized
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<tbl_Line>()
                .HasMany(d => d.tbl_Policy)
                .WithRequired(c => c.tbl_Line) //error WithRequired not recognized
                .HasForeignKey(c => c.int_lineID);
        }

There are some errors when I'm trying to use it in Entity Framework Core :

1- 'ModelBuilder' does not contain a definition for 'Conventions' and no extension method 'Conventions' accepting a first argument of type 'ModelBuilder' could be found (are you missing a using directive or an assembly reference?)

2- 'CollectionNavigationBuilder<tbl_Line, tbl_Policy>' does not contain a definition for 'WithRequired' and no extension method 'WithRequired' accepting a first argument of type 'CollectionNavigationBuilder<tbl_Line, tbl_Policy>' could be found (are you missing a using directive or an assembly reference?)

Until there is support for ModelBuilder.Configurations I emulate the older Entity Framework construction with extension methods:

public static EntityTypeBuilder<Project> Map(this EntityTypeBuilder<Project> cfg)
{
    cfg.ToTable("sql_Projects");

    // Primary Key
    cfg.HasKey(p => p.Id);

    cfg.Property(p => p.Id)
        .IsRequired()
        .HasColumnName("ProjectId");

    return cfg;
}

and then call it from OnModelCreating like this...

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Project>().Map();
    base.OnModelCreating(modelBuilder);
}

It is a bit clumsy, but cleaner, I think, than trying to configure dozens of entities within the main DbContext.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM