Ale*_*xGH 5 c# asp.net-mvc entity-framework asp.net-core
这段代码位于MVC,我需要做类似的事情,但是在ASP.net Core, usingEntity Framework Core或 with 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);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在以下位置使用它时出现一些错误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?)
在支持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;
}
Run Code Online (Sandbox Code Playgroud)
然后像这样从OnModelCreating调用它......
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Project>().Map();
base.OnModelCreating(modelBuilder);
}
Run Code Online (Sandbox Code Playgroud)
我认为,这有点笨拙,但比尝试在主 DbContext 中配置数十个实体更干净。
| 归档时间: |
|
| 查看次数: |
23939 次 |
| 最近记录: |