当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'TB_TABLENAME' 中的标识列插入显式值。

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。
作者: 永恒の_☆    地址: http://blog.csdn.net/chenghui0317/article/details/9468089

   今天使用MVC开发,在某个模块做添加操作的时候报错: 

   当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'TB_TABLENAME' 中的标识列插入显式值。

   字面上理解该表的标识列设置成OFF了,就不能为该表的标识列指定显示值插入数据库,事实上我并没有指定,所以看了下该表对应的实体类的配置,如下:

        /// <summary>
        /// 
        /// id
        /// </summary>
        [Column("ID")]
        public System.Int32 Id{get;set;}
发现该类的标识列主键id 的 column 只是跟数据库字段绑定了,但是没有绑定为主键和标识列,加上之后再试一下就好了,如下:
        /// <summary>
        /// 
        /// id
        /// </summary>
        [Column("ID", ColumnType.IdentityAndPrimaryKey)]
        public System.Int32 Id{get;set;}
其实这些标记和java中的注解类似,既然id是序列,那么都要统统指定清楚,不然程序不知道接下来怎么保存,代码如下:

    @Id
    @SequenceGenerator(name="generator",sequenceName="seq_article",allocationSize=1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="generator")
    @Column(name="id",unique=true,nullable=false)
    public Long getId() {
        return id;
    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值