EF-获取自增ID值
EF6中,如果将模型类的ID属性设置为主键自增,则我们在外部怎么对其赋值,数据库依然会将该值自增,而不会处理外部给的值。
如果我们在新增数据之后,需要用到这个自增的ID主键,怎么获取呢?EF6在执行完context.SaveChanges()之后,会自动将这个自增ID主键值从数据库中返回并赋给当前ID属性。其实我们什么都不用操作,直接获取。如下代码:
using (DemoContext context = new DemoContext()) {
//在使用模型类之前需要强制创建数据库 true:强制创建
context.Database.Initialize(true);
#region 新增
Student stu = new Student {
Name = "赵子成",
BirthDay = DateTime.Parse("1990-08-01"),
Age =
};
//新增一个Student实体,相当于在Student表中,新增一条数据
context.Students.Add(stu);
Console.WriteLine("新增之前\nID={0} Name={1} BirthDay={2} Age={3} \n", stu.ID, stu.Name, stu.BirthDay.Value.ToString("yyyy/MM/dd"), stu.Age);
//保存
context.SaveChanges();
Console.WriteLine("新增之后\nID={0} Name={1} BirthDay={2} Age={3}", stu.ID, stu.Name, stu.BirthDay.Value.ToString("yyyy/MM/dd"), stu.Age);
#endregion
}
新增过后的结果:
新增之前
ID=00000000-0000-0000-0000-000000000000 Name=赵子成 BirthDay=1990/08/01 Age=27 新增之后
ID=c4049f86-3d74-e711-970d-58fb84575557 Name=赵子成 BirthDay=1990/08/01 Age=27
ID就是Student模型类的自增主键。新增之后可以直接获取该ID值。
不过有一个算是惯例优先模式的一个小坑。如果我们给某个模型类定义了一个ID属性,如下代码:
public class Course{
public int ID{get;set;}
public string Name{get;set;}
}
在使用EF的时候,EF会将ID当做自增主键去处理。但是这时我们不希望ID是自增主键,只是把它当做一个普通的属性而已。这时要给其增加一个约束特性[DatabaseGenerated(DatabaseGeneratedOption.None)]。代码如下:
public class Course{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID{get;set;}
public string Name{get;set;}
}
EF-获取自增ID值的更多相关文章
- Entity Framework添加记录时获取自增ID值
与Entity Framework相伴的日子痛并快乐着.今天和大家分享一下一个快乐,两个痛苦. 先说快乐的吧.Entity Framework在将数据插入数据库时,如果主键字段是自增标识列,会将该自增 ...
- [转] Entity Framework添加记录时获取自增ID值
本文转自:http://blog.csdn.net/educast/article/details/8632806 与Entity Framework相伴的日子痛并快乐着.今天和大家分享一下一个快乐, ...
- MYSQL获取自增ID的四种方法
MYSQL获取自增ID的四种方法 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与tabl ...
- YSQL获取自增ID的四种方法(转发)
YSQL获取自增ID的四种方法(转发) 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与t ...
- DBS-MySQL:MYSQL获取自增ID的四种方法
ylbtech-DBS-MySQL:MYSQL获取自增ID的四种方法 1.返回顶部 1. 1. select max(id) from tablename 2.SELECT LAST_INSERT_I ...
- 简单实用SQL脚本Part:查找SQL Server 自增ID值不连续记录
原文:简单实用SQL脚本Part:查找SQL Server 自增ID值不连续记录 在很多的时候,我们会在数据库的表中设置一个字段:ID,这个ID是一个IDENTITY,也就是说这是一个自增ID.当并发 ...
- ThinkPHP 3.2.3+ORACLE插入数据BUG修复及支持获取自增Id的上次记录
TP+ORACLE插入数据BUG修复以及获取自增Id支持getLastInsID方法 这些天在做Api接口时候,发现用TP操作Oracle数据库,发现查询修改删除都能执行, 但一旦执行插入操作老是报错 ...
- 查找SQL Server 自增ID值不连续记录
在很多的时候,我们会在数据库的表中设置一个字段:ID,这个ID是一个IDENTITY,也就是说这是一个自增ID.当并发量很大并且这个字段不是主键的时候,就有可能会让这个值重复:或者在某些情况(例如插入 ...
- MySQL获得指定数据表中auto_increment自增id值的方法及实例
http://kb.cnblogs.com/a/2357592/很多情况下,我们要提前用到当前某个表的auto_increment自增列id,可以通过执行sql语句来查询到这个id值. show ta ...
随机推荐
- 如何知道我 的python是32位还是64位的?
方法一: 打开IDLE,看第一行提示,例如: 32位系统是这样的 Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.19 ...
- Ubuntu更改源和搜狗输入法安装卸载
安装完Ubuntu 16.04后,要更换为国内的软件源: sudo gedit /etc/apt/sources.list #用文本编辑器打开源列表 在文件开头添加下面的阿里云的软件源: deb ...
- 从fasta中提取或者过滤掉多个序列
Google了一下,现成的工具不多. 自己写代码也可以,就是速度肯定不快,而且每次写也很麻烦. 偶然看到QIIME的filter_fasta.py有这个功能,从name list中提取多个序列. fi ...
- uva11388
因为a,b整除gcd(a,b),lcm(a,b)又整除a,b,因此如果lcm不整除gcd就是-1:否则的话,lcm=a*b/gcd.而a不能小于gcd,因此a就取gcd,b取lcm. #include ...
- Bitmap Byte[] 互转
严正声明:作者:psklf出处: http://www.cnblogs.com/psklf/p/5889978.html欢迎转载,但未经作者同意,必须保留此段声明:必须在文章中给出原文连接:否则必究法 ...
- android studio 中的快捷键汇总
1.Ctrl + B 跳入/跳出方法或者资源文件.将鼠标光标定位到某个方法或者资源id的调用处,按Ctrl + B,将会跳入该方法或者资源文件内部,功能等同于Ctrl + 鼠标左键.如果将鼠标光标定位 ...
- Apache commons(Java常用工具包)简介
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html Be ...
- js的正则表达式的替换
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...
- 使用AdminLTE 在content区,打开相应网页
参考:https://bbs.csdn.net/topics/391846671 问: 比如打开starter.html,然后点击其左边栏的链接(如user.html)的时候,怎么实现在右边的cont ...
- HTML相关知识点总结
1.表格<table>常用属性 cellspacing:两个单元格之间的距离 注:属性值为数字,效果图如下(左边cellspacing="0",右边cellspacin ...