用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()遇到的类型不匹配错误的更多相关文章

  1. [转]在static代码块或static变量的初始化过程中使用ServiceManager提供的api的陷阱

    一. 案例 1.源码: /** @hide */ private TelephonyManager(int slotId) { mContext = null; mSlotId = slotId; i ...

  2. 无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)

    无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器. (Microsoft SQL Server,错误: 20582) 2013-01-05 15:02 478 ...

  3. 安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错”(错误原因、详细分析及解决方法)以及在Windows Server2012上安装.NET Framework 3.5的详细分析及安装过程

           问题:在服务器(操作系统为Windows server 2012)上安装SQL Server 2012的过程中,安装停留在下图所示的界面上,显示”正在启用操作系统功能NetFx3”随后出 ...

  4. java初始化过程中成员变量

    package day01; class Base{ int j; //1.j=0 Base(){ add(1); //2.调用子类add()方法 System.out.println(j); //4 ...

  5. 单个 LINQ to Entities 查询中的两个结构上不兼容的初始化过程中出现类型“XXXX”

    最近在做一个报表的时候,用EF使用了Contact方法,但是程式运行一直出错.最近终于找到原因了,写下来提醒下自己.好了,进入正题: 现在我举个栗子,目前数据库中有ParentStudent表和Sub ...

  6. SELECT控件add方法 ie 类型不匹配

    s = document.createElement('select'); try{ //for ie8 or earlier s.add(new Option('text','value'),s.o ...

  7. 第三篇 视觉里程计(VO)的初始化过程以及openvslam中的相关实现详解

    视觉里程计(Visual Odometry, VO),通过使用相机提供的连续帧图像信息(以及局部地图,先不考虑)来估计相邻帧的相机运动,将这些相对运行转换为以第一帧为参考的位姿信息,就得到了相机载体( ...

  8. YARN分析系列之三 -- 从脚本入口分析 ResourceManager的初始化过程

    1. 由脚本找到 RM 主类 这部分,我们从脚本作为入口去逐步深入ResourceManager源码. 从 Hadoop 官方文档 中可以看到 ResourceManager 的启动命令为: Usag ...

  9. vue 快速入门 系列 —— Vue 实例的初始化过程

    其他章节请看: vue 快速入门 系列 Vue 实例的初始化过程 书接上文,每次调用 new Vue() 都会执行 Vue.prototype._init() 方法.倘若你看过 jQuery 的源码, ...

随机推荐

  1. CentOS6.0(64位)安装Apache+PHP+Mysql教程,安装Magento(解决DOM,Mcrypt,GD问题)完整教程

    CentOS6.0(64位)安装Apache+PHP+Mysql教程,安装Magento(解决DOM,Mcrypt,GD问题)完整教程 0   Posted by :小黑 On : 2012 年 9 ...

  2. DOM9大节点

    ELEMENT_NODE 1 元素节点 常用 ATTRIBUTE_NODE 2 属性节点 常用 TEXT_NODE 3 文本节点 常用 CDATA_SECTION_NODE 4 CDATA区段   E ...

  3. js 中escape,encodeURI,encodeURIComponent的区别

    escape:方法不能能够用来对统一资源(URI)进行编码,对其编码应使用encodeURI和encodeURIComponent encodeURI:encodeURI ()方法返回一个编码的 UR ...

  4. 微软自带的Serialization和Newtonsoft简单测试

    刚刚对这两个进行了一下小小的测试 发现 当转换的内容少的时候  微软自带的比Newtonsoft速度要快一些,内容多的时候反之,当内容多到一定量的时候微软自带的就不能转换了,需要修改一下MaxJson ...

  5. JS获取当前时间并把时间赋给input表单

    <script>window.onload = function(){ function getDate(){ debugger; var today = new Date(); var ...

  6. 郑轻校赛题目 问题 G: 多少个0

    问题 G: 多少个0 时间限制: 1 Sec  内存限制: 128 MB提交: 192  解决: 40 题目描述 一个n*n的方格,每个格子中间有一个数字是2或者5,现在从方格的左上角走到右下角,每次 ...

  7. Hdu 1443 Joseph

    Joseph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. mfc ui2

    引用:http://www.cnblogs.com/likwo/archive/2010/10/22/1858716.html CJLib(mfc扩展开发包,是xtreme toolkit的前生,但x ...

  9. 内存缓存机制and垃圾回收机制

    一.内存缓存机制 var_dump(memory_get_usage(true)); $a="laruence"; var_dump(memory_get_usage(true)) ...

  10. 迭代器和for-of

    在ES5及之前的JS标准中,我们习惯了用for(var i = 0; i < Array.length;i++){//TODO}或者是for(var index in Array){consol ...