【发布时间】:2017-09-19 12:51:00
【问题描述】:
我的项目设置如下.. 主要项目 DataAccess 是一个类库 EntityFramework 数据库表它是一个类库 EntityFramework Identity 表它是一个类库
在我的主要项目 webconfig 中,我有 2 个连接字符串,一个用于普通数据库表,另一个用于身份表。普通数据库表的连接字符串是实体框架连接字符串
<add name="HWCEntities" connectionString="metadata=res://*/HWCEF.csdl|res://*/HWCEF.ssdl|res://*/HWCEF.msl;provider=System.Data.SqlClient;provider connection string="data source=****;initial catalog=****;persist security info=True;user id=****;password=****;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
身份实体框架连接字符串是这样的
<add name="HWCIdentityEntities" connectionString="metadata=res://*/HWCIdentityEF.csdl|res://*/HWCIdentityEF.ssdl|res://*/HWCIdentityEF.msl;provider=System.Data.SqlClient;provider connection string="data source=****;initial catalog=****;persist security info=True;user id=****;password=****;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
但是,如果我将该连接字符串放在主项目的 webconfig 中,并尝试登录 Web 应用程序,我会收到此错误
实体类型 ApplicationUser 不是当前上下文模型的一部分。
它指向AccountController的第78行
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
所以我没有使用身份连接字符串,而是使用这个
<add name="HWCIdentityEntities" connectionString="Data Source=****;Initial Catalog=****;User ID=****;password=****;Integrated Security=false;" providerName="System.Data.SqlClient"/>
使用该连接字符串不会引发任何错误,我可以使用该连接字符串,但是当我尝试查询身份数据库时,我会收到此错误
“System.Data.Entity.Infrastructure.UnintentionalCodeFirstException”类型的异常发生在 HWC.Identity.dll 中,但未在用户代码中处理 附加信息:上下文在 Code First 模式下使用,代码是从 EDMX 文件生成的,用于 Database First 或 Model First 开发。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用 Database First 或 Model First,请确保 Entity Framework 连接字符串包含在启动项目的 app.config 或 web.config 中。如果要创建自己的 DbConnection,请确保它是 EntityConnection 而不是其他类型的 DbConnection,并且将其传递给采用 DbConnection 的基本 DbContext 构造函数之一。要了解有关 Code First、Database First 和 Model First 的更多信息,请参阅此处的实体框架文档:http://go.microsoft.com/fwlink/?LinkId=394715
这个错误是在我的 HWCIdentityEF.Context.csdl|res 中抛出的
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
如何解决此问题以便查询身份数据库?我假设我需要在主应用程序中使用 Identity 连接字符串?
【问题讨论】:
-
你的上下文类是什么样的?它继承自什么?
-
@DavidG,我拿了身份表,将它们留在自己的数据库中,然后从数据库中生成 EF
-
你需要在这里显示更多代码,还有,
SignInManager是什么? -
我应该添加什么其他代码?因为我不确定。 SignInManager,这些都是你创建MVC项目时生成的
-
你是数据库第一吗?见this?
标签: c# .net entity-framework