我开始使用ASP.NET Core模板构建我的ASP.NET Web应用程序。我注意到它已经在〜\ Data \ Migrations文件夹中有两个文件,一个是naemd * _CreateIdentitySchema.cs,另一个是ApplicationDbContextModelSnapshot。
起初它抱怨我有Powershell 2所以我安装了v3。 然后我从包管理器安装了包EntityFramework(v6.1.3),因为某种方式没有从模板安装,就像在VS.2015中那样。
现在它给我一个错误,比如" 异常调用" SetData"用" 2"参数:"然后是一堆东西。
$domain.SetData('contextProject', $contextProject)
CategoryInfo : NotSpecified: (:) [], MethodInvocationException
FullyQualifiedErrorId : SerializationException
Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation,
Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'没有标记为可序列化。" 在C:\ Users \ Devel.nuget \ packages \ entityframework \ _6.1.3 \ tools \ EntityFramework.psm1:720 char:5 + $ domain.SetData(' startUpProject',$ startUpProject)
我正在使用VS.2017 Update 1,我得到了这个"核心"事情使生活复杂化,而不是简单化。
答案 0 :(得分:2)
我做了以下事情:
然后我发出了这个命令启用 - 迁移
启用 - 迁移 - 项目名称" MyProjectWithContext" -ConnectionString" Data Source =。\ SQL; Initial Catalog = XXXXX; Integrated Security = True; MultipleActiveResultSets = True" -ConnectionProviderName System.Data.SqlClient
添加迁移
的内容相同Add-Migration -Name MyName -ProjectName" MyProject" -ConnectionString "数据源=。\ SQL;初始目录= XXXX;集成 安全= TRUE; MultipleActiveResultSets =真" -ConnectionProviderName System.Data.SqlClient的
答案 1 :(得分:1)
不确定是否有任何帮助:在将我的内容放入针对.NET 4.6.2的项目中后,我遇到了同样的问题,但是使用了“新的”MSBuild-Syntax(我认为这就是所谓的内容)。 / p>
Projectname.csproj(包含实体框架代码的那个)看起来像这样:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
我现在使用VS 2017的“Windows经典桌面 - 类库(.NET Framework)”模板重新创建项目(基本上:复制所有代码并再次设置所有依赖项)。
现在,Projectname.csproj看起来像这样(遗留的MSBuild?不知道如何调用它):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
我仍然可以添加“new”项目作为对包含ASP.NET Core内容的项目的引用。而且,更重要的是,在包含EF类型的项目中使用“添加 - 迁移”现在可以工作(编辑:我仍然需要遵循Damian Drygiel给出的建议:启动项目必须是具有有效app.config的不同项目)
老实说,我仍然不确定使用这种解决方法是否是一个好主意,因为它会导致混合两种类型的项目/ MSBuild版本。不确定其含义是什么。到目前为止,似乎有效。
到目前为止我的外卖:不要尝试将.NET 4.6与“新”项目格式一起使用。目前这似乎不太好。
答案 2 :(得分:0)
大家好,我也遇到相同的错误,其主要原因是您的类库属于标准库类型,使用.net框架类型的类库,问题已解决,安装了实体框架并运行enable-迁移命令的工作原理,它应该包含一个上下文类。