【发布时间】:2019-04-15 19:33:02
【问题描述】:
我有以下两个项目的解决方案:
- Razor 类库
- ASP.NET Core Web 应用程序
在类库中,我有一个这样的 dbcontext:
public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Customer> Customers { get; set; }
}
在 Web 应用程序中,我使用 Startup.cs 文件中的以下行将 dbcontext 注册为服务
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("ApplicationDbContextConnection")));
此时我可以在两个项目中使用 dbcontext。现在,在不更改类库的情况下,我想为同一个数据库定义新表,因此我在 Web 应用程序项目中创建了一个新的 dbcontext,它继承自类库中的那个。
public class ExtendedApplicationDbContext : ApplicationDbContext
{
public ExtendedApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<Product> Products { get; set; }
}
我更新了我的 Startup.cs 文件,以便同时注册新的 dbcontext,以便能够在 Web 应用程序中使用 Products 表。
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("ApplicationDbContextConnection")));
services.AddDbContext<ExtendedApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("ApplicationDbContextConnection")));
现在我可以在两个项目中使用 ApplicationDbContext,但是当我尝试在 Web 应用程序中使用 ExtendedApplicationDbContext 时,发生了一些奇怪的事情。
我可以读取数据,但我所做的所有更改都不会更新数据库。
我试图解释它,但我找不到解决问题的方法。 有人可以帮我理解我的代码有什么问题吗?
【问题讨论】:
-
你在正确的上下文中调用
SaveChanges/await SaveChangesAsync吗?你能显示你进行更改的代码吗? -
我使用 SaveChanges() 和 SaveChangesAsync() 的方式与我对它工作的 dbcontext 的使用方式相同。
标签: asp.net-core entity-framework-core