[英]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)
)这段代码在
MVC
,我需要在ASP.net Core
执行类似的操作,使用Entity Framework Core
或使用DataAnnotations
(我已经将参数从DbModelBuilder(MVC Entity Framework)
更改为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
:当我尝试在
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?)
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?)
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:在支持ModelBuilder.Configurations 之前,我使用扩展方法模拟旧的实体框架构造:
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...然后像这样从OnModelCreating调用它......
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.与尝试在主 DbContext 中配置数十个实体相比,这有点笨拙,但我认为更简洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.