我想测试构建应用程序的多种方法(数据库优先、模型优先、代码优先)。在使用 T4Scaffolding 并且对 DB 后期修改有很多问题之后,我认为 EF 不够灵活。现在我发现了一件很奇怪的事情。我在 Web.Config 中指定了一个“DefaultConnection”,并指向解决方案的 App_Data 文件夹中的单个 .mdf 文件。使用 Code-First 方法,我创建了我的实体(类),然后搭建了存储库、上下文,一切似乎都工作得很好,除了我得到了在我“删除”和更新数据库之前存储的数据。但是,在检查 VS 服务器资源管理器后,数据库只包含用于身份(用户、角色)的表,这表明实际的数据库在其他地方。我怀疑它位于'C:\Users{MyUser}\AppData\Local\Microsoft\Microsoft SQL Server 本地 DB\Instances'。但我无法从那里打开 .mdf 文件进行检查,因为它们已经在使用中。我被困住了。我的数据在哪里???
忘了提到我的应用程序中有两个上下文,因此我在 PM 控制台中收到警告:“在程序集中发现了多个上下文类型......”。
然而,第一个是“ApplicationDbContext”,它只指身份数据库:
public class ApplicationUser : IdentityUser
{
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
第二个上下文绑定到来自 Web.Config 的单个数据库连接,它具有业务逻辑实体