【发布时间】:2017-01-07 02:15:36
【问题描述】:
我已经使用 Visual Studio 2015 开发了一个新的 asp.net Core Web 应用程序。我正在通过向我的本地数据库添加其他表来添加用户自定义选项。但是,我无法添加任何 EF 正确查询新表所需的内容。尝试查询表时出现以下错误..
为 ApplicationDbContext 应用现有迁移可能会解决此问题
ApplicationDbContext 的迁移尚未应用于数据库 •00000000000000_CreateIdentitySchema
应用迁移
在 Visual Studio 中,您可以使用包管理器控制台将挂起的迁移应用到数据库: PM>更新-数据库 或者,您可以在项目目录的命令提示符下应用挂起的迁移:
dotnet ef 数据库更新
我的表是一个包含几个 varchar 或 nvarchar 列的简单表。该模型看起来像...
namespace MyNamespace.ColorSchemes
{
public class ColorSchemesViewModel
{
[Required]
public string Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string bc { get; set; }
}
表在 SQL Server 中看起来像这样...
CREATE TABLE [dbo].[ColorSchemes](
[Id] [nvarchar](50) NOT NULL,
[Name] [varchar](32) NOT NULL,
[bc] [nchar](7) NOT NULL
)
我已经像这样将表格添加到应用程序上下文中......
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public DbSet<ColorSchemesViewModel> Colors { get; set; }
我也类似地用作单独的类..
public DbSet<ColorSchemes> Colors { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
我已经将上下文添加到这样的控制器中......
private ApplicationDbContext _context;
public MyController(IMemoryCache memoryCache, ILoggerFactory loggerFactory, ApplicationDbContext context)
{
_memoryCache = memoryCache;
_logger = loggerFactory.CreateLogger<ChordMVCController>();
_context = context;
}
我试图像这样在我的控制器中查询表...
var colorSchemes = (from c in _context.Colors
select c).ToList();
我已尝试使用包管理器来按照错误中的说明...
PM> Update-Database
我总是收到这个错误...
System.Data.SqlClient.SqlException: There is already an object named 'AspNetRoles' in the database.
这没有意义,因为该表已经在数据库和 EF 定义中。如何将我的表正确添加到 EF 迁移中以便我可以查询它?
【问题讨论】:
标签: entity-framework asp.net-core