Asp.net mvc 在实体框架中使用代码优先更新数据库时出错

Asp.net mvc 在实体框架中使用代码优先更新数据库时出错,asp.net-mvc,asp.net-mvc-3,entity-framework,asp.net-mvc-4,ef-code-first,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Asp.net Mvc 4,Ef Code First,我是MVC4.0的新手。我创建了一个示例Internet应用程序。我加了一个班 public class User { public int UserId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } 现在,我想在用户表中添加一个名为MiddleName的新列 我已经添加了如下属性 public string LastName

我是MVC4.0的新手。我创建了一个示例Internet应用程序。我加了一个班

public class User
{
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
 }
现在,我想在用户表中添加一个名为MiddleName的新列

我已经添加了如下属性

    public string LastName { get; set; }
我已经在项目中启用了迁移

现在,我想用这个新列名更新数据库

我在PackageManager控制台中尝试了以下语法

PM> Update-Database
这给了我以下的错误

Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
No pending explicit migrations.
System.Data.Entity.Core.MetadataException: Schema specified is not valid. Errors: 
(0,0) : error 0005: The 'Namespace' attribute is invalid - The value 'MvcApplication14._5' is invalid according to its datatype 'http://schemas.microsoft.com/ado/2009/11/edm:TNamespaceName' - The Pattern constraint failed.
   at System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.LoadItems(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModelOption, DbProviderManifest providerManifest, ItemCollection itemCollection, Boolean throwOnError)
   at System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError)
   at System.Data.Entity.Core.Metadata.Edm.EdmItemCollection..ctor(IEnumerable`1 xmlReaders)
   at System.Data.Entity.Utilities.XDocumentExtensions.GetStorageMappingItemCollection(XDocument model, DbProviderInfo& providerInfo)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator)
   at System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, 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)
Schema specified is not valid. Errors: 
(0,0) : error 0005: The 'Namespace' attribute is invalid - The value 'MvcApplication14._5' is invalid according to its datatype 'http://schemas.microsoft.com/ado/2009/11/edm:TNamespaceName' - The Pattern constraint failed.

首先,应在Package Manager控制台中使用以下命令启用迁移:

Enable-Migrations
此命令用于将迁移文件夹添加到项目中, 然后更改模型,例如,将此属性添加到模型:

public string LastName { get; set; }
然后可以使用以下命令进行更新:

Update-Database -Verbose
我们将指定–Verbose标志,以便可以看到正在运行的SQL 针对数据库


它不喜欢名称空间MVCAPApplication14中的点下划线。删除点或下划线,它应该可以工作。

使用Update Database-Verbose时是否会出现相同的错误?@Sirwanaffi:我在Package Manager控制台中遇到了上述错误。请检查。您使用的实体框架版本是什么?错误消息不清楚?!“Namespace”属性无效在MVC4中创建示例应用程序时,默认情况下它提供实体框架Dll,即5.0.0。0@abcdefghi是的,我知道,我的意思是你们使用了带有详细参数的更新数据库吗?