EFcore 报错:Value cannot be null. Parameter name: frameworkName
今天在EF core 2.2 中使用code first 保存数据时遇到一个错误:
Value cannot be null.Parameter name: frameworkNameat Microsoft.EntityFrameworkCore.Metadata.Internal.ClrCollectionAccessorFactory.Create(INavigation navigation)at Microsoft.EntityFrameworkCore.Metadata.Internal.Navigation.<>c.<get_CollectionAccessor>b__21_0(Navigation n)at Microsoft.EntityFrameworkCore.Internal.NonCapturingLazyInitializer.EnsureInitialized[TParam,TValue](TValue& target, TParam param, Func`2 valueFactory)at Microsoft.EntityFrameworkCore.Metadata.Internal.Navigation.get_CollectionAccessor()at Microsoft.EntityFrameworkCore.NavigationExtensions.GetCollectionAccessor(INavigation navigation)at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.CustomShaperCompilingExpressionVisitor.VisitExtension(Expression extensionExpression)at System.Linq.Expressions.Expression.Accept(ExpressionVisitor visitor)
看到错误说时和collection有关,
代码中的是这样定义的
private readonly List<SharedDataItem> _sharedData = new List<SharedDataItem>();public IEnumerable<SharedDataItem> SharedData => _sharedData.AsReadOnly();
当时第一反应是一对多的关系 映射有问题, 然后检查了entityconfiguration类以及add-migration / update-database步骤是否正常, 发现一切ok, 最终的数据库表结构也没问题。
后来又想了下,是不是因为我私有字段的缘故, 然后在entityconfiguration类中添加了下面的代码
builder.HasMany(p => p.SharedData).WithOne().HasForeignKey("WorkOrderId");var navigation = builder.Metadata.FindNavigation(nameof(WorkOrder.SharedData));navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
结果还是有问题, 允悲。。。。
后来看到一个github的帖子: https://github.com/dotnet/efcore/issues/19535 才找到了原因:
是我的私有字段定义readonly了。 删除即可。
最终的定义是:
private readonly List<SharedDataItem> _sharedData = new List<SharedDataItem>();public IEnumerable<SharedDataItem> SharedData => _sharedData.AsReadOnly();
再次运行各种save操作都ok了。 因为这个还导致了我的电脑各种蓝屏。
EFcore 报错:Value cannot be null. Parameter name: frameworkName相关推荐
- activiti报错ProcessEngines.getDefaultProcessEngine()为null
activiti报错ProcessEngines.getDefaultProcessEngine()为null 文件名错误,默认加载classpath下面的activiti.cfg.xml,而不是ac ...
- 关于报错connection holder is null
关于报错connection holder is null 在练习使用jsp过程中 package com.cjh.dao.impl;import com.cjh.pojo.User; import ...
- 解决win10下 git闪退的问题(或者使用git命令报错fatal: open /dev/null or dup failed)
解决win10下 git闪退的问题(或者使用git命令报错fatal: open /dev/null or dup failed) 本人在win10下安装git完成后,打开闪退,在"运行&q ...
- Flask报错:sqlite3.IntegrityError: NOT NULL constraint failed: step. date
Flask报错:sqlite3.IntegrityError: NOT NULL constraint failed: step. date 报错如图 解决方法 报错如图 解决方法 开始: db=co ...
- 报错笔记:cannot convert parameter 1 from 'char [1024]' to 'unsigned char *'
第一段:数组的类型是char,因此函数在引用const char 型的指针的时候,必须用char类型数组的首地址.如果是byte类型的指针的首地址,则会报cannot convert paramete ...
- es报错:request contains unrecognized parameter [ignore_throttled]
问题描述 在使用 Springboot 整合 ES 的时候,使用 Springboot 时,使用的是 Springboot data 提供的工具,具体依赖如下: <dependency>& ...
- spark报错 java.lang.NullPointerException: Null value appeared in non-nullable field:top level Product
报错内容 java.lang.NullPointerException: Null value appeared in non-nullable field: top level Product in ...
- 命令消费kafka报错(id: -1 rack: null) disconnected
CDP 717环境使用kafka-console-consumer 命令消费kafka报错如下 23/03/28 09:19:07 WARN clients.NetworkClient: [Consu ...
- Mybatis报错All elements are null
控制台报错:your MySQL server version for the right syntax to use near '' at line 1 原因:数据库字段和实体类字段不一致 数据库里 ...
最新文章
- 类的成员包含 java_Java 面向对象(十五)类的成员 之 内部类
- Oracle学习笔记整理手册
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( plugins 闭包代码块中引入插件 | PluginAware#apply 方法引入插件 )
- Protocol Buffer Java应用实例
- TensorFlow莫烦 placehoder (三)
- cocos2d-x JS 重力感应监听事件
- PHP中的$_SERVER['PATH_INFO']
- distinct使SQL查询除去重复的字段
- Native层和so接口和Java层
- 基于WF的意见征集6(浅析)
- 一个对于小数四舍五入的算法C语言版
- S3VM和TSVM的不同
- 机器学习岗面试准备提纲笔记
- 4x4矩阵键盘工作原理及扫描程序_单片机学习:单片机独立按键和矩阵键盘概念及原理...
- MATLAB绘制地图超详细教程
- Centos系统新建文本文档.txt
- 深圳绘制SVG地图数据
- 按键精灵抓取不到的问题
- Linux中有关文件的命令总结(查看、编辑、压缩、配置)
- nodejs+vue+elementui图书在线阅读网站系统express