zoukankan      html  css  js  c++  java
  • 【转发】Linq To EF添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题

    1:添加记录后,如何获取新添加的ID的值

    比如,一个实体 TestEntity   对应一个表TestEntity(ID主键自增,Name,age),使用linq to ef   添加一条记录后,如何获取新记录的ID值?如下代码:

    var te = new TestEntity ()
    {
        Name = "名字",
        Age = 21
    };
    using (EFDbContext context = new EFDbContext())
    {
        context.TestEntity .Add(te);                
        context.SaveChanges();
        return te.ID;
    }

    调用SaveChanges()之后,ef.ID的值就是数据库中新加记录对应自增标识列的值。Linq to ef智能地判断出ID就是自增主键标识列。 他给我们返回了。

    2:列名叫“ID”的列,它不是自增列,linq to ef不让插入的问题

    如标题,就是,列名叫“ID”的列,它不是主键,也不是主键,linq to ef不让插入。我已经给ID赋值了 但它一直提示 ID不能为NULL  ,打断点,看了,也有值!

    代码走到SaveChanges(),就报异常,提示ID不能为空!超蛋疼...

    原因:默认情况,linq to ef认为只要实体类中有ID属性,数据库对应的是一定是自增标识列。

    解决方式:

    1)第一步

    因为EFDbContex继承自Context类,所以,我们需要从新对它这个叫OnModelCreating的虚函数进行实现

        public class TestEntity
        {
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }

    2)第二步

    在实体类叫ID的属性上加标记实现(记得添加引用):

        public class TestEntity
        {
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }

    原文地址:https://blog.csdn.net/zhifeiya/article/details/25743361

  • 相关阅读:
    [转] 关于hibernate的缓存使用
    周鸿祎,我的互联网方法论
    cwRsync window下的跨服务器的文件同步
    一个代价11万的bug
    批处理备份
    NodeJs环境部署
    spring接收参数
    @Autowired
    谈谈把网站迁移到阿里云的一些感想和其中遇到的一些问题
    HTML5+JS 《五子飞》游戏实现(一)规则
  • 原文地址:https://www.cnblogs.com/firstcsharp/p/9082708.html
Copyright © 2011-2022 走看看