簡體   English   中英

MVC5數據庫中已經有一個名為“ AspNetUsers”的對象

[英]MVC5 There is already an object named 'AspNetUsers' in the database

我正在嘗試從本教程中克隆具有身份角色的MVC5並進行授權,並且該項目位於此處

我正在嘗試在Package Manager控制台中使用update-database ,但一直說我有

數據庫中已經有一個名為“ AspNetUsers”的對象。

但是,如果您查看圖像,則我沒有包含這些表的數據庫。

WebConfig連接字符串

<add name="DefaultConnection" connectionString="Data Source=.\\SQLEXPRESS;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" providerName="System.Data.SqlClient" />

在此處輸入圖片說明

在此處輸入圖片說明

PM> Update-Database 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201603280555304_InitialCreate].
Applying explicit migration: 201603280555304_InitialCreate.
System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'AspNetUsers' in the database.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<NonQuery>b__0(DbCommand t, DbCommandInterceptionContext`1 c)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass30.<ExecuteStatements>b__2e()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements, DbTransaction existingTransaction)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, IEnumerable`1 systemOperations, Boolean downgrading, Boolean auto)
   at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
   at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
ClientConnectionId:2640ae66-2469-42f1-92ad-2895d26f73e4
Error Number:2714,State:6,Class:16
There is already an object named 'AspNetUsers' in the database.

Configuration.cs(種子方法)

namespace RecreationalServicesTicketingSystem.Migrations
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Migrations;
    using System.Linq;
    using RecreationalServicesTicketingSystem.Models;
    using System.Collections.Generic;

    internal sealed class Configuration : DbMigrationsConfiguration<RecreationalServicesTicketingSystem.Models.ApplicationDbContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
        }

        protected override void Seed(ApplicationDbContext context)
        {
            var departments = new List<Department>
            {
                new Department { DepartmentID = 1, DepartmentName = "IT"},
                new Department { DepartmentID = 2, DepartmentName = "Menzit Admin" },
                new Department { DepartmentID = 3, DepartmentName = "Human Resources"},
                new Department { DepartmentID = 4, DepartmentName = "Mechanics" },
                new Department { DepartmentID = 5, DepartmentName = "Directors" },
                new Department { DepartmentID = 6, DepartmentName = "Operations"}

            };
            departments.ForEach(s => context.Departments.AddOrUpdate(p => p.DepartmentName, s));
            context.SaveChanges();


            var depots = new List<Depot>
            {
                new Depot { DepotID = 1, DepotName = "Porana"},
                new Depot { DepotID = 2, DepotName = "Far North"},
                new Depot { DepotID = 3, DepotName = "Horowhenua"},
                new Depot { DepotID = 4, DepotName = "Manawatu"},
                new Depot { DepotID = 5, DepotName = "Silverdale"},
                new Depot { DepotID = 6, DepotName = "Christchurch"},

            };
            depots.ForEach(s => context.Depots.AddOrUpdate(p => p.DepotName, s));
            context.SaveChanges();

            var users = new List<ApplicationUser>
        {
            new ApplicationUser { FirstMidName = "Jason",   LastName = "Wan",
                EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 1, DepotID = 1,IsAdministrator = true},
            new ApplicationUser { FirstMidName = "Andy", LastName = "Domagas",
                EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 1,DepotID = 1,IsAdministrator = true},
            new ApplicationUser { FirstMidName = "Denis",   LastName = "Djohar",
                EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 1 ,DepotID = 1,IsAdministrator = true },
            new ApplicationUser { FirstMidName = "Christine",   LastName = "West",
                EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 2, DepotID = 3,IsAdministrator = false},

        };


            users.ForEach(s => context.Users.AddOrUpdate(p => p.FirstMidName, s));
            context.SaveChanges();

            users.ForEach(s => context.Users.AddOrUpdate(p => p.LastName, s));
            context.SaveChanges();




            var categories = new List<Category>
            {
                new Category {CategoryID = 0001, CategoryName = "Desktop"},
                new Category {CategoryID = 0002, CategoryName = "Mobile"},
                new Category {CategoryID = 0003, CategoryName = "Menzits"},
                new Category {CategoryID = 0004, CategoryName = "XMPRO"},
                new Category {CategoryID = 0005, CategoryName = "Con-X"},
                new Category {CategoryID = 0006, CategoryName = "Promapp"},
                new Category {CategoryID = 0007, CategoryName = "QGIS"},
            };
            categories.ForEach(s => context.Categories.AddOrUpdate(p => p.CategoryName, s));
            context.SaveChanges();

            var tickets = new List<Ticket>
            {
                new Ticket {
                    UserID = users.Single(s => s.LastName == "Wan").Id, //UserID
                    CategoryID = categories.Single(c => c.CategoryName == "Con-X" ).CategoryID,
                    Issue = ("Con-X Login Error"),
                    Priority = Priority.High
                },
                new Ticket {
                    UserID = users.Single(s => s.LastName == "Wan").Id, //UserID
                    CategoryID = categories.Single(c => c.CategoryName == "Desktop" ).CategoryID,
                    Issue = ("Can't remote access C0123"),
                    Priority = Priority.Med
                },
            };


            foreach (Ticket e in tickets)
            {
                var ticketInDataBase = context.Tickets.Where(
                    s =>
                        s.User.Id == e.UserID && //UserID
                        s.Category.CategoryID == e.CategoryID).SingleOrDefault();
                if (ticketInDataBase == null)
                {
                    context.Tickets.Add(e);
                }
            }
            context.SaveChanges();
        }
    }
}

您的SQL Express數據庫中AspNetUsers有一個帶有AspNetUsers表的數據庫。 您顯示的屏幕快照與連接字符串訪問所在的SQL Server實例不同。

  • 截圖: (localdb)\\MSSqlLocalDb
  • 連接字符串: .\\SQLExpress (與(local)\\SQLExpress等效)

此外,正如LoLeRji所指出的那樣,您尚未在連接字符串中指定數據庫名稱。 因此,將在服務器實例上的默認數據庫(通常是master數據庫)中創建表。

在添加高級選項(如果有)之前,應始終確保連接字符串遵循兩種模式之一。

  • SERVER=<servername\\instancename>;DATABASE=<databasename>;UID=<username>;PWD=<password>;
  • SERVER=<servername\\instancename>;DATABASE=<databasename>;Integrated Security=true;

請參閱: connectionstrings.com

我不確定這是否會有幫助,但是當我閱讀您的連接字符串時,我看不到您嘗試連接到哪個數據庫。 連接字符串僅將./SQLEXPRESS聲明為數據源,但未提供數據庫名稱。

例如,據我所知,連接字符串應類似於"data source=<dbserver>;initial catalog=<databasename>;...""data source=<path>\\<dbname>;..."

我認為問題是您正在嘗試更新數據庫,但是實體框架不知道要更新哪個數據庫。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM