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

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

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

百分百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!

 

 

 

相关文章:

  • 2022-02-23
  • 2021-07-21
  • 2021-07-24
  • 2022-01-24
  • 2021-08-25
  • 2021-06-11
  • 2021-08-09
  • 2021-07-29
猜你喜欢
  • 2022-12-23
  • 2021-09-25
  • 2021-09-04
  • 2021-12-19
  • 2021-12-03
  • 2022-12-23
相关资源
相似解决方案