zoukankan      html  css  js  c++  java
  • Entity Framework Code First 遭遇主键自动生成问题

    4.0后就没有去跟踪后面的版本了。现在直接开始用5.0没想到在做User的GURD时就遭遇insert不进数据问题。

    ISet<User>.Add(user);_context.SaveChanges()时开始报错:

    插入条目时出错,最后的英文错误大概是:

    Cannot insert the value NULL into column

    百分百user是有值的啊,为什么又说userId为null呢?

    google一番后,原因大概是如果是主键,没有特殊说明,ef会默认认为这个字段数据库会自动生成,即使你给这个字段赋值

    最后它也把null给到数据库,而如果数据库确实没有设成identity,则会导致插入null。解决方法就是特殊说明咯。

    如果不是用code first模式,或者是允许在domain里定义实体类时用attribute来标记,你就是给userid字段设置属性如下:

    [DatabaseGenerated(DatabaseGenerationOption.None)]
    public
    intBuildID{ get;set;}

    如果是code first,并且不想在domain混入数据库视点,则在做mapping的时候加多一条这样的说明:
     this.Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

    Done!
  • 相关阅读:
    scnner02 (nextLine)
    Scanner01
    Spring 框架 (初学)
    查询自己写了多少行代码
    jdbc事务
    jdbc(预编译插入数据)
    jdbc(java连接数据库)
    监听器扩展
    listener(监听器)
    Filter过滤器
  • 原文地址:https://www.cnblogs.com/wusong/p/3182554.html
Copyright © 2011-2022 走看看