基于EF 6代码的迁移异常:Microsoft.VisualStudio.Data.Tools.Package不可序列化?

时间:2014-01-31 15:27:35

标签: entity-framework

我有这个配置

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

            protected override void Seed( IAS.Models.ApplicationDbContext context ) {
                var baseDir = AppDomain.CurrentDomain.BaseDirectory;
                context.Database.ExecuteSqlCommand(File.ReadAllText(baseDir + "\\MyInsertScriptsql"));
        }
    }

运行upate-dataabase时,我得到以下异常

  

Excepciónalllamar a“SetData”con los argumentos“2”:“El tipo   'Microsoft.VisualStudio.Data.Tools.Package.Internal.OAProject'del   ensamblado'Microsoft.VisualStudio.Data.Tools.Pa ckage,   Version = 11.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'no   estámarcadocomo serializable。“恩D:\ Dev \ Insuranse Advanced   服务\ IAS \包\ EntityFramework.6.0.0 \ TOOLS \ EntityFramework.psm1:   611Carácter:20   + $ domain.SetData&lt;&lt;&lt;&lt; ('startUpProject',$ startUpProject)       + CategoryInfo:NotSpecified:(:) [],MethodInvocationException       + FullyQualifiedErrorId:DotNetMethodException System.NullReferenceException:Referencia a objeto no establecida como   instancia de un objeto。恩   System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(项目   project,Int32 shellVersion)en   System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(项目   项目)en   System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(字符串   configurationTypeName,Boolean useContextWorkingDirectory)zh   System.Data.Entity.Migrations.UpdateDatabaseCommand&LT;&GT; C_ DisplayClass2&LT; .ctor&GT,B _0()   恩   System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(动作   命令)参考没有establecida como instancia de un   objeto。

2 个答案:

答案 0 :(得分:6)

问题解决了,我打开了文件 .. \ packages \ EntityFramework.6.0.0 \ tools \ EntityFramework.psm和第611行说明:

 $domain.SetData('startUpProject', $startUpProject)

我查看了我的解决方案之后,我发现启动项目已更改为数据库项目,更正了问题并且问题已经消失。

答案 1 :(得分:0)

这是一个非常晚的解决方案,但我认为它可能会帮助其他人。我遇到了这个问题,我将项目更改为StartUp项目(右键单击项目并设置为启动项目&#39;)并排除问题。