Entity framework 6 实体框架错误:无效的对象名称“dbo.XXXXXXX”
我有以下数据表:Entity framework 6 实体框架错误:无效的对象名称“dbo.XXXXXXX”,entity-framework-6,Entity Framework 6,我有以下数据表: CREATE TABLE [dbo].[AuthorizeAttrib] ( [Id] [UNIQUEIDENTIFIER] NOT NULL , [ControllerName] [VARCHAR](100) NOT NULL , [ActionName] [VARCHAR](100) NULL , CONSTRAINT [PK_AuthorizeAttrib] PRIMARY KEY CLUSTERED ( [Id] ASC )
CREATE TABLE [dbo].[AuthorizeAttrib]
(
[Id] [UNIQUEIDENTIFIER] NOT NULL
, [ControllerName] [VARCHAR](100) NOT NULL
, [ActionName] [VARCHAR](100) NULL
, CONSTRAINT [PK_AuthorizeAttrib] PRIMARY KEY CLUSTERED ( [Id] ASC )
)
ON [PRIMARY];
在代码中,我有以下内容:
public class StsDatabase : MembershipRebootDbContext<StsUser, StsGroup>
{
public StsDatabase() : this("name=MembershipReboot") { }
public StsDatabase(string name) : base(name) { this.RegisterUserAccountChildTablesForDelete<StsUser>(); }
public DbSet<AuthorizeAttrib> AuthorizeAttribs { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<RuleSet> RuleSets { get; set; }
public DbSet<RuleSetRole> RuleSetRoles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.ConfigureMembershipRebootUserAccounts<StsUser>();
modelBuilder.ConfigureMembershipRebootGroups<StsGroup>();
modelBuilder.Configurations.Add(new AuthorizeAttribMap());
modelBuilder.Configurations.Add(new RoleMap());
modelBuilder.Configurations.Add(new RuleSetMap());
modelBuilder.Configurations.Add(new RuleSetRoleMap());
}
}
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
我不知道还有什么会引起这个挑战
有什么想法吗?当构建/发布脚本运行时,引入了错误的web.config。仍然指向开发数据库而不是安全开发数据库。自我提示:始终检查web.configs。运动部件太多了 也许可以尝试调用base.OnModelCreatingmodelBuilder;在你设定惯例之前。还要检查基类是否存在潜在冲突?此方法将重写基类方法。如果基本方法运行,它将配置默认值,而不是我构建的所有覆盖。我已经检查了基类是否存在冲突,没有冲突,因为这些是全新的对象。如果上下文能够生成正确的SQL,那么EF配置就可以了。该表可能不在您实际访问的数据库中,也可能不是您认为可以访问的另一个数据库,或者该表未经授权。我应该在哪一侧检查授权?连接字符串使用SQL登录,因此帐户是稳定的。我可以登录到SQL管理器,运行查询并获得结果。我检查了SQL端的表权限,它们看起来是正确的,尽管我不是SQL安全专家。没关系。在某种程度上你是对的。运行生成/发布脚本时,拉入了错误的web.config。仍然指向开发数据库而不是安全开发数据库。自我提示:始终检查web.configs。运动部件太多了!
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
SELECT [Extent1].[Id] AS [Id]
, [Extent1].[ControllerName] AS [ControllerName]
, [Extent1].[ActionName] AS [ActionName]
FROM [dbo].[AuthorizeAttrib] AS [Extent1];