Code First 数据库的表中属性的配置
数据类型的约定配置
|
默认规则 |
列的数据类型是由数据库决定的,SqlServer的默认规则如下 String: nvarchar(MAX) Int:int Bool:bit Decimal:decimal(18,2) Byte[]:varbinary(MAX) |
|
DataAnnotation |
[Column(TypeName=”varchar”)] |
|
Fluent |
modelBuilder.Entity<Category>().Property(c=>c.Name).HasColumnType(“varchar”) |
数据类型的长度约定配置
|
默认规则 |
max |
|
DataAnnotation |
[MaxLength(100)] [MinLength(10)] [StringLength(50)] |
|
Fluent |
modelBuilder.Entity<Category>().Property(c=>c.Name).HasMaxLength(50) |
列是否可空的约定配置
|
默认规则 |
主键非空 外键可以为空 Int,bit,decimal,dateTime非空 Varchar,varbiary 可以为空 |
|
DataAnnotation |
[Required] |
|
Fluent |
modelBuilder.Entity<Category>().Property(t=>t.Name).IsRequired() |
主键约定配置
|
默认规则 |
属性名称是Id,或者是类名称+Id作为主键 |
|
DataAnnotation |
[Key] |
|
Fluent |
modelBuilder.Entity<Category>().HasKey(c=>c.Id) |
EF框架要求每个实体都要有主键,没有主键会抛出异常,当你的主键是GUID时,需要特别处理,DataAnnotation :[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Fluent:modelBuilder.Entity<Category>().Porperty(c=>c.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
时间戳
只有byte[]类型的属性可以映射TimeStamp
DataAnnotation:[Timespamp]
Fluent:modelBuilder.Entity<Category>().Property(c=>c.RowVersion).IsRowVersion()
Unicode数据类型
|
默认规则 |
默认为Unicode数据 |
|
DataAnnotation |
不能配置 |
|
Fluent |
IsUnicode() |
Decimal设置
|
默认规则 |
(8,2) |
|
DataAnnotation |
不可以设置 |
|
Fluent |
HasPrecision(10,2) |
复杂的数据类型
|
默认规则 |
复杂类型没有Key属性,用做其他类属性时,不能用做集合属性 |
|
DataAnnotation |
[Complex] |
|
Fluent |
modelBuilder.Complex<Address>() |
Code First 数据库的表中属性的配置的更多相关文章
- C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)
原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高. 包装了一个简单的sql ...
- MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结
1,为当前已有的表添加新的字段 alter table student add studentName varchar(20) not null; 2,为当前已有的表中的字段设置为主键自增 alter ...
- 一致性Hash算法在数据库分表中的实践
最近有一个项目,其中某个功能单表数据在可预估的未来达到了亿级,初步估算在90亿左右.与同事详细讨论后,决定采用一致性Hash算法来完成数据库的自动扩容和数据迁移.整个程序细节由我同事完成,我只是将其理 ...
- 数据库小记:根据指定名称查询数据库表名及根据指定名称查询数据库所有表中的字段名称(支持mysql/postgre)
意:本篇文章仅适用于mysql和postgre这两种数据库 1.查询数据库中所有表名及对应表的详细信息 select * from INFORMATION_SCHEMA.tables 2.根据指定名称 ...
- oracle将查询到的数据插入到数据库的表中
一.Oracle数据库中,把一张表的查询结果直接生成并导入一张新表中. 例如:现有只有A表,查询A表,并且把结果导入B表中.使用如下SQL语句: create table b as selec ...
- SQL SERVER数据库的表中修改字段属性被阻止“Prevent saving changes that require table re-creation”
1.启动SQL SERVER,选择工具—>选项,去掉“ 阻止保存要求重新创建表的更改”前面的勾. 2.选择设计器 3.去掉“阻止保存要求重新创建表的更改”前面的对号,点击OK. 重新启动SQL ...
- SQL SERVER数据库的表中修改字段的数据类型后,不能保存
在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一 ...
- ORACLE数据库删除表中记录报record is locked by another user
在操作ORACLE数据库的时候,由于执行完,没有COMMIT,直接把PL/SQL关闭掉,后来导致那张表被锁住,当编辑时就会出现这个信息,record is locked by another user ...
- Spark 加载数据库mysql表中数据进行分析
1.工程maven依赖包 <properties> <spark_version>2.3.1</spark_version> <!-- elasticsear ...
随机推荐
- jmeter-----用户参数和用户定义变量的区别
在调试脚本的时候,可以使用前置处理器中的用户参数组件进行数据的提供,在该数据中可以使用固定值也可以使用变量值. 如果是固定不变的一些配置项,不需要多个值的时候,也可以使用用户已定义的变量组件. 一.界 ...
- day2、购物商城
作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够 代码如下: import codecs #登录接口,用户名密码都正确登录成功,否则失败 def login(your_name,your_ ...
- day1 str字符串常用方法
字符串是编程中常用的类型,字符型在内存中是以单个形式存储的,比如name = "alex",在内存中存储的形式为["a","l"," ...
- 保存最后N个元素
cookbook系列 问题:对要搜索的值的最后几项做个有限的历史记录. 方案: #coding=utf- from collections import deque def search(lines, ...
- lr11_Controller_Options选项介绍:
lr11_Controller_Options选项介绍:
- JavaSE1
<The Pragmatic Programmer><The Mythical Man-month><Clean Code><The Clean Coder& ...
- Kail Linux渗透测试教程之在Metasploit中扫描
Kail Linux渗透测试教程之在Metasploit中扫描 在Metasploit中扫描 在Metasploit中,附带了大量的内置扫描器.使用这些扫描器可以搜索并获得来自一台计算机或一个完整网络 ...
- ssvm和console 模板机 连接不上管理节点
说明: cloudstack 版本http://www.shapeblue.com/packages/ 并不是官方的 systemvm64template-4.6.0-vmware.ova 官 ...
- 关于python安全性的问题
收集总结了一下python安全方面的知识点以及近年来的相关漏洞,如果有需要修正或补充的地方,欢迎各位师傅的指出. 常见web漏洞在python中的示例. xss python下的xss其原理跟php是 ...
- 【四边形不等式】HDU3506-Monkey Party
[题目大意] 香蕉森林里一群猴子(n<=1000)围成一圈开会,会长给他们互相介绍,每个猴子需要时间a[i].每次只能介绍相邻的两只猴子x和y认识,同时x所有认识的猴子和y所有认识的猴子也就相互 ...