DbInitializer.cs初始化过程中context.entityName.Add()遇到的类型不匹配错误
用Asp.Net Core+EF Core建立一个测试项目过程中,使用DbInitializaer.cs进行数据库表的初始化工作,当项目测试运行时执行到context.实体名.Add()时,提示错误信息:
- The 'UserStatusID' on entity type 'UserStatus' does not have a value set and no value generator is available for properties of type 'Byte'. Either set a value for the property before adding the entity or configure a value generator for properties of type 'Byte'.
经过检查,各处的类型设置没有问题,检索网上的信息 Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题) ,在这篇文章中的到启示,最终解决了问题。
留作记录,具体如下:
model模型定义:
- public class UserStatus
- {
- [DatabaseGenerated(DatabaseGeneratedOption.None)]public byte UserStatusID { get; set; }
- [Required]public string Discription { get; set; }
- }
DbInitializer.cs中的初始化代码
- if (!context.UserStatuses.Any())
- {
- var userStatus = new UserStatus[]
- {
- new UserStatus {UserStatusID=,Discription="在岗" },
- new UserStatus {UserStatusID=,Discription="调走" },
- new UserStatus {UserStatusID=,Discription="退休" },
- };
- foreach (var u in userStatus)
- {
- context.UserStatuses.Add(u);
- }
- context.SaveChanges();
- }
执行到高亮的context.UserStatuses.Add(u)时,就出现了上面的错误。
后来,修改了Data文件夹中的***Context.cs文件中的OnMouldCreating,增加高亮部分,初始化成功,在数据库中查到了正确的初始数据。
- protected override void OnModelCreating(ModelBuilder builder)
- {
- builder.Entity<UserAuthority>().ToTable("Authority");
- builder.Entity<UserAuthority>().Property(p => p.UserAuthorityID).ValueGeneratedNever();
- //其他。。。。。。
- }
思考:
包括www.asp.net上一些教程给出的例子,模型的主键均没有定义[DatabaseGenerated(DatabaseGeneratedOption.None)]属性,在DbInitializer.cs初始数据定义时没有什么特别的要求。但是一旦定义了该属性,就需要在上下文定义类中OnModelCreating()中,一并给出该信息。
这个问题有些奇怪,非得在两处都进行这样的声明方可,不是不项目启动的时候文件执行顺序的问题?
DbInitializer.cs初始化过程中context.entityName.Add()遇到的类型不匹配错误的更多相关文章
- [转]在static代码块或static变量的初始化过程中使用ServiceManager提供的api的陷阱
一. 案例 1.源码: /** @hide */ private TelephonyManager(int slotId) { mContext = null; mSlotId = slotId; i ...
- 无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)
无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器. (Microsoft SQL Server,错误: 20582) 2013-01-05 15:02 478 ...
- 安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错”(错误原因、详细分析及解决方法)以及在Windows Server2012上安装.NET Framework 3.5的详细分析及安装过程
问题:在服务器(操作系统为Windows server 2012)上安装SQL Server 2012的过程中,安装停留在下图所示的界面上,显示”正在启用操作系统功能NetFx3”随后出 ...
- java初始化过程中成员变量
package day01; class Base{ int j; //1.j=0 Base(){ add(1); //2.调用子类add()方法 System.out.println(j); //4 ...
- 单个 LINQ to Entities 查询中的两个结构上不兼容的初始化过程中出现类型“XXXX”
最近在做一个报表的时候,用EF使用了Contact方法,但是程式运行一直出错.最近终于找到原因了,写下来提醒下自己.好了,进入正题: 现在我举个栗子,目前数据库中有ParentStudent表和Sub ...
- SELECT控件add方法 ie 类型不匹配
s = document.createElement('select'); try{ //for ie8 or earlier s.add(new Option('text','value'),s.o ...
- 第三篇 视觉里程计(VO)的初始化过程以及openvslam中的相关实现详解
视觉里程计(Visual Odometry, VO),通过使用相机提供的连续帧图像信息(以及局部地图,先不考虑)来估计相邻帧的相机运动,将这些相对运行转换为以第一帧为参考的位姿信息,就得到了相机载体( ...
- YARN分析系列之三 -- 从脚本入口分析 ResourceManager的初始化过程
1. 由脚本找到 RM 主类 这部分,我们从脚本作为入口去逐步深入ResourceManager源码. 从 Hadoop 官方文档 中可以看到 ResourceManager 的启动命令为: Usag ...
- vue 快速入门 系列 —— Vue 实例的初始化过程
其他章节请看: vue 快速入门 系列 Vue 实例的初始化过程 书接上文,每次调用 new Vue() 都会执行 Vue.prototype._init() 方法.倘若你看过 jQuery 的源码, ...
随机推荐
- java线程生命周期及其对应方法
http://blog.sina.com.cn/s/blog_a8aa82cc0101ktrm.html http://wenku.baidu.com/view/c242df69011ca300a6c ...
- rndc控制远程dns服务器配置方法
1- 如果不存在/etc/rndc.conf touch /etc/rndc.conf chown named:named /etc/rndc.conf 2- rndc-confgen > /e ...
- mongoDB(1)
1.查询时,不写条件的查询,速度要远远大于有条件的查询. 2.消除重复数据: 3.db.listCommands() 查看mongo的runCommand支持哪些功能了. db.runCommand( ...
- mysql中OPTIMIZE TABLE的作用
在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小.这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空 ...
- dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications解决办法
这个问题产生的原因是:在iOS 10中有UserNotifications这个framework而iOS 9中没有,在iOS 9上运行的时候,会因为找不到而出错. 解决办法是,修改UserNotifi ...
- Lua JSONRPC学习笔记
JSON RPC JSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高. 官网网站: ...
- 深入研究虚拟机之垃圾收集(GC)算法实现
一. What, Why 1. GC是什么?为什么需要GC GC,全写是Garbage Collection , 即垃圾回收.GC是一种自动内存管理机制.通常我们在需要时手动的分配 ...
- 线性时间的排序算法--桶排序(以leetcode164. Maximum Gap为例讲解)
前言 在比较排序的算法中,快速排序的性能最佳,时间复杂度是O(N*logN).因此,在使用比较排序时,时间复杂度的下限就是O(N*logN).而桶排序的时间复杂度是O(N+C),因为它的实现并不是基于 ...
- hdu 1175冒牌连连看
#include <bits/stdc++.h> using namespace std; const int N = 1005; int arr[N][N]; int vis[N][N] ...
- 关于easyUI 的tabs 在子页面增加显示tabs的一个问题
在父页面点个链接能动态看到子页面的情况太简单,请看easyUI官网:http://www.jeasyui.com/tutorial/layout/tabs2.php现在说的是在子页面点个按钮也能触发增 ...