如何使用 ASP.NET Core 设置 EF6 迁移

2024-06-26

我正在尝试采用吉米·博加德的Contoso大学核心项目 https://github.com/jbogard/ContosoUniversityCore

我想先进行代码迁移,但不确定如何正确设置它。 我将 Migrator.EF6.Tools 添加到我的项目中。

当我运行启用迁移时 我收到此错误:

Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=14.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not 
marked as serializable."
At C:\Users\SomeUser\.nuget\packages\entityframework\6.1.3\tools\EntityFramework.psm1:718 char:5
+     $domain.SetData('project', $project)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + 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=14.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not 
marked as serializable."
At C:\Users\SomeUser\.nuget\packages\entityframework\6.1.3\tools\EntityFramework.psm1:719 char:5
+     $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=14.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not 
marked as serializable."
At C:\Users\SomeUser\.nuget\packages\entityframework\6.1.3\tools\EntityFramework.psm1:720 char:5
+     $domain.SetData('startUpProject', $startUpProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue[T](Project project, String propertyName)
   at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory)
   at System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName)
   at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Object reference not set to an instance of an object.

这里真正的问题是 EF 有不同的“口味”。只需转到 EF 根文档即可查看差异:

  • EF(根文档文件夹):https://learn.microsoft.com/en-us/ef/ https://learn.microsoft.com/en-us/ef/
  • EF 6 迁移命令:https://dzone.com/articles/ef-migrations-command https://dzone.com/articles/ef-migrations-command
  • EF Core迁移命令:https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations
  • .Net Core 中的迁移命令发生了很大变化,我建议
    另请访问:https://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet https://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

以下是我使用 EF 6 和 .NET Core 进行迁移的秘诀:

1st.- 您必须将这些行添加到.csproj:

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.1" />
</ItemGroup>

注:版本已更改

2.- 创建上下文在你的项目中是这样的:

public class YourContext : DbContext
{
    #region Constructors

    public YourContext()
    {
    }

    public YourContext(DbContextOptions options) : base(options)
    {

    }

    #region DbSets  // YOUR DB SETS GO HERE...
    #endregion DbSets

    #region OnConfiguring // THIS HELPED ME A LOT:
    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        // In order to be able to create migrations and update database:
        if (!options.IsConfigured)
        {
            options.UseSqlServer("YourLocalConnectionStringShouldBeHere");
        }
        base.OnConfiguring(options);
    }
    #endregion

    #region Model Creating

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
       // Your Model Crerating Stuff
    }

    #endregion Model Creating
}

3rd.- 添加迁移:

转到项目文件夹,from cmd, type:

dotnet ef migrations add [NameOFYourMigrationGoesHere] -c YourContext

注意:不要忘记将创建的文件添加到源代码管理,这不是自动完成的

4rd.- 更新您的数据库: 4.a.-在码头工人-> 您可以运行该项目(完全使用 Docker),迁移将在第一次使用 Context 时应用。

注意:(它将使用为该环境配置的连接字符串)

4.b.- 您的本地数据库-> 编辑在 ConfigurationContext.OnConfigure 中硬编码的连接字符串并运行(从 cmd 控制台):

dotnet ef database update --context ConfigurationContext

我希望它对你有帮助。

Juan

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ASP.NET Core 设置 EF6 迁移 的相关文章

  • ASP.NET Core 2.1 中的 UseStaticFiles、UseSpaStaticFiles 和 UseSpa 之间有什么区别?

    ASP NET Core 2 1 1为appBuilder提供了几种看似相关的扩展方法 UseStaticFiles from Microsoft AspNetCore StaticFiles UseSpaStaticFiles from
  • 从.net Core WebApi中的startup.cs访问HttpContextAccessor

    我正在将异常记录到 asp net core 中的数据库中 MyDbContext 采用 HttpContextAccessor 参数 因此 我将 HttpContextAccessor 发送到 MyDbContext cs 以访问我的 J
  • 无法在.net core中使用WCF WSHttpBinding

    我正在尝试将我的项目从 net 移动到 net core 我最初在 net 中使用 WCF WSHttpBinding 服务 但无法在 net core 中使用相同的服务 我尝试使用 BasicHttpBinding 在客户端与 WsHtt
  • 将登录重定向到控制器操作

    从使用个人用户帐户的 ASP NET 5 Web 应用程序模板开始 我成功地使用 Microsoft 帐户进行外部身份验证 当用户单击 登录 时 他们将被重定向到ExternalLogin in AccountController像这样
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 如何从 Asp.Net Core 中间件通过 JsonResult 进行响应?

    我想通过以下方式回复JsonResult来自 Asp Net Core 中间件 但如何实现这一点并不明显 我用谷歌搜索了很多 但收效甚微 我可以通过JsonResult来自全球的IActionFilter通过设置ActionExecuted
  • 没有配置身份验证处理程序来处理该方案

    这是一个非常烦人的问题 我在我的 asp net core 项目上设置 cookie 身份验证 有时会出现此错误 有时不会 没有图案 它只是开始抛出错误 然后突然停止 然后再次开始 例外情况是 InvalidOperationExcepti
  • 不同索赔的多个登录页面

    这是我的情况 要在网站上执行某些操作 用户应该经过身份验证 不同的行动需要不同的主张 例如 要下订单 用户仅通过电话号码进行身份验证 要查看购买历史记录 用户应通过电话号码和密码进行身份验证 而要更改电话号码 用户应使用双因素身份验证进行身
  • ASP.NET 5 beta 8 中的 Windows 身份验证支持

    我有一个 ASP NET 5 MVC 6 Web API 项目 大多数 API 端点都具有 Authorize 属性 并且在 IIS 和 Visual Studio 中的项目属性中启用了 Windows 身份验证 这一切在 beta 7 中
  • ASP.NET Core WebAPI 安全注意事项

    我的 WebAPI 就是一个供我的 UI 使用的 API 后端 事实上 我的 UI 可能会使用 10 个 WebAPI 服务 我很难理解在安全方面我需要考虑什么 我的 API 使用 Bearer 令牌进行保护 并且仅允许 https 我设置
  • ASP.NET Core 的当前上下文中不存在名称“model”

    我正在尝试使用 ASP NET Core 开发一个带有插件的网站 我有我的主要项目 asp net Web 应用程序 它运行良好 我有一个类库项目 其中的控制器也可以正常工作 但我有一个问题的视图 当我打开 cshtml 文件时 我可以看到
  • 我可以将 Entity Framework 6 与 Visual Studio 2010 一起使用吗?

    我们的开发团队 和构建服务器 成功地将 Visual Studio 2010 和 Visual Studio 2012 混合用于我们的应用程序 然而 自从从 EF5 升级到 EF6 后 我们似乎不再能够使用 VS2010 进行构建 具体来说
  • 实体框架 6 - 查询性能

    我使用 Entity Framework 6 目前有一个包含许多包含的查询 它将大约 1200 个实体加载到 dbContext 中 加载实体似乎相当慢 因为查询需要几乎一分钟的时间 对于表演我能做些什么吗 我有 4 个这样的查询需要 2
  • 使用 IdentityServer 4 时如何在 Api 项目中添加附加声明

    对不起我的英语不好 我有三个项目 IdentityServer Ensino Mvc Ensino Api IdentityServer 项目提供来自 IdentityServer4 库的主要身份信息和声明 声明配置文件 声明地址 声明 S
  • Razor 页面 - CSS 隔离 - 某些 HTML 标签的样式不起作用

    我正在尝试使用 Razor Pages CSS 隔离在 ASP NET Web 应用程序中设置正文 标题和表单标签的样式 在作用域 CSS 文件 Layout cshtml css 中为某些 HTML 标记创建的样式不起作用 其他组件文件也
  • 无法将代码优先迁移应用到 mysql 数据库

    我正在使用 EF 代码优先模型开发 asp net mvc 我正在尝试首先使用 EF 代码将迁移应用到我的项目中 我正在使用 MySql 数据库 目前我使用的是 EF 4 3 1 版本和 6 6 4 0 版本的 mysql Connecto
  • Entity Framework 5 Code First - 如何“重新开始”?

    我一直在我的应用程序中成功使用 EF 5 Code First 我大约有40张桌子 但是 我遇到了一个问题 我似乎可以正确处理迁移 所以 我想做的就是以某种方式告诉 EF 将数据库的当前模式视为一个新的起点 并从这个点开始管理它 这样 我可
  • 在 ASP.NET Core 中全局重用变量

    我必须强制这些变量在我想使用的每个变量上重用 这让我很困难 我需要创建一个类来定义这些变量并在整个程序中使用它们 我怎样才能做到这一点 string RootFolderName Uplaod string ProductPictureFo
  • 在 ASP.NET Core 中,Delegate 如何转换为 RequestDelegate?

    我调查了什么MapGet 正在做 发现其中一个重载需要一个Delegate类型 类 不是关键字 也不是RequestDelegate 然后将其传递给MapMethods 这需要一个RequestDelegate 我觉得非常令人困惑的是这个演
  • 来自 ASP.NET Core MVC 的 POST/PUT Web API 调用上的 502 错误网关

    调用我为应用程序创建的 Web API 时 我在 ASP NET Core 中遇到奇怪的错误 GET 请求处理良好并返回所有应有的数据 但我的 POST PUT 命令都返回 502 特别是来自 MVC 应用程序 我可以从 Postman 调

随机推荐

  • GKLocalPlayer 身份验证不起作用,但 isAuthenticated 返回 YES(游戏中心沙盒)

    我正在努力将回合制比赛集成到我的游戏中 几天前 我开始从 GameKit API 收到奇怪的错误 指出本地玩家未经过身份验证 尽管他已通过身份验证 当我启动应用程序时 authenticateHandler被调用 显示视图控制器 输入密码后
  • ulimit -r 返回不同的值

    我将以下两行添加到系统范围的 etc security limits conf 中 soft rtprio 55 hard rtprio 55 系统重新启动后 根据我在计算机上访问用户帐户的方式 我会得到两个不同的结果 user clien
  • 如何计算 pandas 系列中到前一个零的距离?

    我有以下 pandas 系列 以列表形式表示 7 2 0 3 4 2 5 0 3 4 我想定义一个新的系列 返回到最后一个零的距离 这意味着我想要以下输出 1 2 0 1 2 3 4 0 1 2 如何以最有效的方式在 pandas 中做到这
  • 如何在html5画布中向前和向后移动圆圈中的对象?

    我正在 html5 canvas 中开发一个小应用程序 我需要使用键盘按键以圆周运动移动对象 我可以使用键盘按键移动对象 但存在错误 该对象不会从同一位置向后或向前移动 任何人都可以帮助我完成此操作 请检查以下代码 任何形式的帮助将非常感激
  • Rust 中结构的惯用迭代器 + 突变?

    我刚刚写完这段代码 Watcher to look for changes in files pub struct Watch lt a gt glob Option
  • 将操作方法​​名称作为参数传递给 Facelets 组件

    我正在调用模板并传递如下参数
  • 在 Google 地图上显示路径时出现问题

    我有多个经度和纬度点 例如 1 long lat starting point 2 long lat 3 long lat 4 long lat 我的代码如下
  • 更改 Json 中属性的键

    这些天我正在尝试制作一个 json 编辑器 与树视图一起使用 我确实更改了值函数 我也可以更改一些键 但我无法在对象中设置键 我可以设置值 SetValue ref JObject main JToken token JToken newV
  • 如何解决[从不设置cookie的域提供以下静态资源]

    我正在为一些我根本不知道的事情而挣扎 当我 ping 我的网站时 我得到了这个结果 Serve the following static resources from a domain that doesn t set cookies 而且
  • CodeIgniter form_validation->run() 总是返回 false?

    我是新来的CodeIgniter我一直在尝试实现表单提交功能 但是每当我按 提交 时 表单页面只会刷新并且数据库不会更新 看来 this gt form validation gt run 总是返回 false 但我不知道为什么 The 控
  • 使用 CSS 显示 div 内容后淡出

    我正在尝试在单击按钮时显示通知 单击按钮实际上会检查电子邮件验证 我知道要显示一个包含错误消息内容的 div 但是 我想淡出错误消息 比如说 5 秒后 我想用CSS来实现它 以下是我的尝试 它只是隐藏了一切 signup response
  • 文件已创建但无法写入

    我的计划 检查Settings txt 文件 如果该文件不存在 则创建文本并自动写入其中 如果 Settings txt 文件已存在 请忽略 不要创建或写入现有文件 我的问题 当文件不存在时 Settings txt 文件会创建 但它是空的
  • Spark 写入 S3 V4 SignatureDoesNotMatch 错误

    我遇到S3SignatureDoesNotMatch尝试使用 Spark 将 Dataframe 写入 S3 时 症状 尝试过的事情 代码失败有时但有效有时 代码可以read从 S3 没有任何问题 并且能够不时写入 S3 这排除了错误的配置
  • laravel 4嘲笑模拟模型关系

    假设我有两个模型延伸自Eloquent并且它们彼此相关 我可以嘲笑这段关系吗 ie class Track extends Eloquent public function courses return this gt hasMany Co
  • Android:如何从我的主要活动中调用 findPreference()?

    我正在处理 Android 应用程序的首选项屏幕 如果前一项具有特定值 我想禁用 将其灰显 一项 我已经实现了两个类 MainActivity 和 PreferencesActivity 在 MainActivity 中我这样做 publi
  • gmap.js 覆盖层上的 MouseOver 事件?是否可以?

    我在用着gmap js http hpneo github io gmaps examples html我正在尝试在我创建的覆盖标记上创建鼠标悬停事件 这是一个 jsFiddle gt http jsfiddle net LXv87 htt
  • 在vim中显示单个空格不可见字符

    我已经添加了set listchars tab trail extends nbsp 用于显示不可见的字符 它适用于制表符扩展 但不适用于 nbsp 我已阅读以下帮助 set listchars并尝试了那里给出的示例 但我仍然没有得到单空格
  • WinDbg 的好教程吗?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 有没有好的教程来展示如何使用WinDbg http en wikipedia org w
  • +process 中的加号是 Node.js 域文档中的拼写错误吗?

    在本文档中 http nodejs org api domain html http nodejs org api domain html 这一行出现 var PORT process env PORT 1337 加号是拼写错误吗 如果不是
  • 如何使用 ASP.NET Core 设置 EF6 迁移

    我正在尝试采用吉米 博加德的Contoso大学核心项目 https github com jbogard ContosoUniversityCore 我想先进行代码迁移 但不确定如何正确设置它 我将 Migrator EF6 Tools 添