文档章节

Entity Framework 数据生成选项DatabaseGenerated

KavenSu
 KavenSu
发布于 2014/10/28 15:34
字数 397
阅读 148
收藏 1

Entity Framework 数据生成选项DatabaseGenerated

在EF中,我们建立数据模型的时候,可以给属性配置数据生成选项DatabaseGenerated,它后有三个枚举值:Identity、None和Computed。

Identity:自增长

None:不处理

Computed:表示这一列是计算列。

在EF中,如果主键是int类型,Code First生成数据库的时候会自动设置该列为自增长。但如果主键是Guid类型,我们就要手动的去设置了。

对于下面的模型,如果我们没有设置自增长,数据库中会以0来填充

复制代码

   Guid SocialSecurityNumber { ;   FirstName { ;   LastName { ;

复制代码

复制代码

             person = = =  ( context =

复制代码

插入第二条记录的时候就会报错了。所以,下面的模型设置才是正确的。

复制代码

   Guid SocialSecurityNumber { ;   FirstName { ;   LastName { ;

复制代码

现在我们来看看有些情况配置为None也是有用的。修改一下上面的模型。

复制代码

   SocialSecurityNumber { ;   FirstName { ;   LastName { ;

复制代码

我们再插入一条记录看看

复制代码

    person = = = =  ( context =

复制代码

在数据库中存储的是1,并不是我们所想要的12345678.这是为什么呢?

因为主键是SocialSecurityNumber是Int类型,Code First在数据库中对该列作自增长处理。这时,我们想再插入自定义的SocialSecurityNumber就不行了。

所以当我们想这样做时,就应该把SocialSecurityNumber的自增长配置为None.

复制代码

    SocialSecurityNumber { ;   FirstName { ;   LastName { ;

复制代码

 如果对属性标识为Computed,EF会认为该列是通过其它列计算得出的,不会将其持久化到数据库中。

复制代码

     SocialSecurityNumber { ;   FirstName { ;   LastName { ;   Name { ;

复制代码

复制代码

 person = = = = =  ( context =

复制代码

查看数据库,我们看到Name并没有存储任何值。

本文转载自:

KavenSu
粉丝 6
博文 66
码字总数 16605
作品 0
深圳
私信 提问
Entity Framework 实体框架的形成之旅--数据传输模型DTO和实体模型Entity的分离与联合B

在使用Entity Framework 实体框架的时候,我们大多数时候操作的都是实体模型Entity,这个和数据库操作上下文结合,可以利用LINQ等各种方便手段,实现起来非常方便,一切看起来很美好。但是如...

walb呀
2017/12/04
0
0
.NET Core开发日志——Entity Framework与PostgreSQL

Entity Framework在.NET Core中被命名为Entity Framework Core。虽然一般会用于对SQL Server数据库进行数据操作,但其实它还支持其它数据库,这里就以PostgreSQL作为例子。 PostgreSQL Postg...

Ken.W
2018/10/02
0
0
9.翻译系列:EF 6以及EF Core中的数据注解特性(EF 6 Code-First系列)

原文地址:http://www.entityframeworktutorial.net/code-first/dataannotation-in-code-first.aspx 数据注解特性是.NET特性,可以在EF或者EF Core中,应用于实体类上或者属性上,以重写默认...

灰太狼的梦想
04/02
0
0
说说Entity Frameworks

ADO.NET Entity Framework 是.Net Framework 3.5 SP1 引入的实体框架,它使开发人员可以通过对象模型(而不是逻辑/关系数据模型)专注于数据。实体框架Entity Framework使用概念层、映射层和...

mcy247
2017/12/06
0
0
EF Core 2.0使用MsSql/Mysql实现DB First和Code First

环境 Visual Studio 2017 最新版本的.NET Core 2.0 SDK 最新版本的 Windows PowerShell 开始搭建 1、在 Visual Studio 2017 中创建新项目 “文件”>“新建”>“项目” 从左侧菜单中选择“已安...

dotNET跨平台
2018/04/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

新手转行学java难吗?新手学java需要注意的6个方面!

新手转行在成都学java到底难不难,对于这个问题,我们专门做过一个调查,超过1000名已经在职的java从业者,其中有80%的程序员觉得学java不难,20%的程序员觉得前期有点难,其中对于50%自学的...

Java领航员
47分钟前
3
0
动态规划-硬币问题分析

什么是动态规划 上次对动态规划已经有了个大概的分析。引用维基百科的话就是: dynamic programming is a method for solving a complex problem by breaking it down into a collection of...

AI考拉
56分钟前
1
0
谈谈lucene的DocValues特性之SortedSetDocValuesField

SortedSetDocValuesField与SortedDocValuesField类似但它是一键多值的(注意:lucene的数据模型是支持一键多值的即key-values模型),lucene在实现时会判断是一键一值还是多值,如果单值就调...

FAT_mt
今天
1
0
生产者消费者模式

//尚学堂视频里,不是完整的 public class Movie { /** * 共同的资源 */ private String pic; //flay为true生产,false消费 private boolean flag=true; public synchronized void play(Str......

南桥北木
今天
1
0
使用阿里云镜像安装kubernetes

参考阿里云镜像 https://opsx.alibaba.com/mirror?lang=zh-CN 系统: CentOS / RHEL / Fedora cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https......

北漂的我
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部