实体框架-无法引用实体上下文

问题描述 投票:0回答:1

上下文:

public class EntityContext : DbContext
{
   public EntityContext(DbContextOptions options) : base(options)
      {

      }

   protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          var cascadeTables = modelBuilder.Model.GetEntityTypes()
           .SelectMany(foreignKeysTables => foreignKeysTables.GetForeignKeys())
           .Where(foreignKeysTables => !foreignKeysTables.IsOwnership &&
                  foreignKeysTables.DeleteBehavior == DeleteBehavior.Cascade);

         foreach (var table in cascadeTables)
         {
             table.DeleteBehavior = DeleteBehavior.Restrict;
         }

         base.OnModelCreating(modelBuilder);
     }

    DbSet<Account> Accounts { get; set; }
}

使用上下文保存到数据库中:

using (var context = new EntityContext()) //error on EntityContext()
{
     context.Account.Add(acc); //error on Account because EntityContext can't be referenced
     context.SaveChanges();
}

我无法引用上下文,因为有一个参数需要它(DbContextOptions选项),如何才能通过它,以便保存我的Account实例?

谢谢。

c# entity-framework asp.net-core dbcontext
1个回答
0
投票

您可以使用依赖项注入(构造函数注入),如

public class YourClass {
    private readonly EntityContext context; 
    public YourClass(EntityContext context) {
        this.context = context;
    }

    public void YourMethod(){
       context.Account.Add(acc);
       context.SaveChanges();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.