C#字段属性设置
键?指的是主键吗?,默认会有主键吗?
因为实体框架要求必须要有一个键属性。您可以使用键注释来指定要将哪一个属性用作 EntityKey。
publicclass Blog
{
[Key]
public int PrimaryTrackingKey { get;set; }
public string Title { get; set; }
public string BloggerName { get;set; }
public virtual ICollection Posts { get;set; }
}
如果您在使用Code First 的数据库生成功能,则Blog 表将具有名为 PrimaryTrackingKey 的主键列,该列默认情况下还定义为 Identity。
必需
[Required]
publicstring Title { get;set; }
MaxLength 和MinLength
[MaxLength(10), MinLength(5)]
publicstring BloggerName { get;set; }
NotMapped 不映射到数据库的属性,可以定义为新属性,而不是直接从数据库当中取出
[NotMapped]
publicstring BlogCode
{
get
{
returnTitle.Substring(0, 1) + ":" +BloggerName.Substring(0, 1);
}
}
ComplexType和外键有什么区别?会在数据库当中显示吗? BlogDetails 作为 Blog 类中的一个属性,将作为 Blog 对象的一部分被跟踪
[ComplexType]
publicclass BlogDetails
{
public DateTime? DateCreated { get;set; }
[MaxLength(250)]
public string Description { get;set; }
}
publicclass BlogDetails
{
public DateTime? DateCreated { get;set; }
[MaxLength(250)]
public string Description { get;set; }
}
ConcurrencyCheck 什么意思?
[ConcurrencyCheck, MaxLength(10),MinLength(5)]
publicstring BloggerName { get;set; }
TimeStamp 什么意思?
[Timestamp]
publicByte[] TimeStamp { get;set; }
DatabaseGenerated 什么意思?
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
publicDateTime DateCreated { get; set; }
指定表名和列名
[Table("InternalBlogs",Schema="dbo")]
publicclass Blog
Column 注释更适于用来指定被映射列的特性。您可以规定名称、数据类型甚至列出现在表中的顺序。下面是 Column 特性的示例。
[Column("BlogDescription",TypeName = "ntext")]
publicString Description { get; set; }
来源: http://blog.csdn.net/gentle_wolf/article/details/14004345
关系特性:InverseProperty和ForeignKey?
使用Fluent API 配置/映射属性和类型
简介
通常通过重写派生DbContext 上的OnModelCreating 方法来访问Code First Fluent API。
属性映射
Property 方法用于为每个属于实体或复杂类型的属性配置特性。
Property 方法用于获取给定属性的配置对象。配置对象上的选项特定于要配置的类型;例如,IsUnicode 只能用于字符串属性。
modelBuilder.Entity()
.Property(e => e.EquipmentStandardName)
.IsUnicode(true);
配置主键
要显式将某个属性设置为主键,可使用 HasKey 方法。在以下示例中,使用了 HasKey 方法对 OfficeAssignment 类型配置 InstructorID 主键。
modelBuilder.Entity().HasKey(t =>t.InstructorID);
配置组合主键
以下示例配置要作为Department 类型的组合主键的DepartmentID 和 Name 属性。
modelBuilder.Entity().HasKey(t => new { t.DepartmentID, t.Name });
关闭数值主键的标识
下示例将DepartmentID 属性设置为System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None,以指示该值不由数据库生成。
modelBuilder.Entity().Property(t =>t.DepartmentID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
指定属性的最大长度
在以下示例中,Name属性不应超过 50 个字符。如果其值超过 50 个字符,则出现 DbEntityValidationException 异常。如果 Code First 基于此模型创建数据库,它还会将 Name 列的最大长度设置为50 个字符。
modelBuilder.Entity().Property(t =>t.Name).HasMaxLength(50);
将属性配置为必需
modelBuilder.Entity().Property(t =>t.Name).IsRequired();
指定不将CLR 属性映射到数据库中的列
modelBuilder.Entity().Ignore(t => t.Budget);
将CLR 属性映射到数据库中的特定列
如果您选择不对CLR 类型定义外键,但希望指定它在数据库中应使用的名称,请编码如下:
modelBuilder.Entity()
.HasRequired(c => c.Department)
.WithMany(t => t.Courses)
.Map(m => m.MapKey("ChangedDepartmentID"));
配置字符串属性是否支持Unicode 内容
默认情况下,字符串为Unicode(SQLServer 中的nvarchar)。您可以使用IsUnicode 方法指定字符串应为varchar 类型。
modelBuilder.Entity()
.Property(t => t.Name)
.IsUnicode(false);
配置数据库列的数据类型
modelBuilder.Entity()
.Property(p => p.Name)
.HasColumnType("varchar");
配置复杂类型的属性
对复杂类型配置标量属性有两种方法。
可以对ComplexTypeConfiguration 调用Property。
modelBuilder.ComplexType
.Property(t => t.Location)
.HasMaxLength(20);
也可以使用点表示法访问复杂类型的属性。
modelBuilder.Entity()
.Property(t => t.Details.Location)
.HasMaxLength(20);
定义DbSet
DbContext 使用DbSet 属性 DbSet有什么作用?
Code First 示例中显示的常见情况是让 DbContext 为模型实体类型使用公共自动 DbSet 属性。例如:
publicclass BloggingContext: DbContext
{
public DbSetBlogs { get; set;}
public DbSetPosts { get; set;}
}
使用code First模式创建数据模型,是否还需要Fluent API,怎样直接建立model,然后使用
C#字段属性设置的更多相关文章
- elasticsearch的store属性跟_source字段——如果你的文档长度很长,存储了_source,从_source中获取field的代价很大,你可以显式的将某些field的store属性设置为yes,否则设置为no
转自:http://kangrui.iteye.com/blog/2262860 众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设 ...
- Mysql 整数类型的字段的属性设置及常用的函数
数据类型 二.MySQL支持的数据类型 数值类型.日期类型.字符串类型 1.数值类型 1)整数类型 tinyint.smallint.mediumint.int和bigint 2)zerofill属性 ...
- SharePoint 2013 日期和时间字段格式设置
前言 最近碰到一个需求,用户希望修改日期和时间字段的格式,因为自己的环境是英文的,默认的时间格式是[月/日/年]这样的格式,我也是碰到这个问题才知道,这是美式的时间格式,然而用户希望变成英式的时间格式 ...
- DEV控件:gridControl常用属性设置(转载)
特别长,先撸下来再说 1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值 sValue=T ...
- DEV控件:gridControl常用属性设置
1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值 sValue=Table.Rows[g ...
- DEV控件GridControl常用属性设置
1. 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2. 如何新增一条记录 (1).gridView.Ad ...
- .NET开源工作流RoadFlow-表单设计-新建表单(属性设置)
点击表单设计工具栏上的 新建表单 按钮会弹出新表单属性设置框: 表单名称:新表单表名称. 数据连接:表单对应的数据库连接(此连接在 系统管理-->数据库连接 中维护). 数据表:表单对应的数据库 ...
- .NET开源工作流RoadFlow-流程设计-流程属性设置
打开流程设计器点击新建流程后会弹出新流程属性设置框,属性设置包括基本信息,数据连接和标识字段三项设置. 1.基本信息 流程ID:系统自动给每个流程分配的一个唯一ID. 流程名称:给您的新流程取一个名称 ...
- mvc中动态给一个Model类的属性设置验证
原文:mvc中动态给一个Model类的属性设置验证 在mvc中有自带的验证机制,比如如果某个字段的类型是数字或者日期,那么用户在输入汉字或者英文字符时,那么编译器会自动验证并提示用户格式不正确,不过这 ...
随机推荐
- JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)
性能分析工具jstatjmapjhatjstack 前提概要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jsta ...
- website 合集
1. oracle http://asktom.oracle.com ( 英文 ) http://itpub.net ( 中文 ) https://www.oracle.com/communitie ...
- MFC绘图相关GDI工具对象和函数介绍
在利用MFC进行界面编程时,除了需要熟悉各种类型控件的操作外,还会经常遇到图形绘制和显示的问题,比如时频分析界面.图像处理界面等.处理这些软件界面开发问题时,不可避免地需要用到一系列GDI工具对象和相 ...
- php缓存技术基础知识
普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询 ...
- 房间WIFI信号不好怎么办?——无线路由桥接(WDS)
背景 1.无线路由在客厅,房间的WIFI信号很差,只有1-2格,虽说是100M的网速,但是从客厅到房间要经过3道墙!电脑的无线接收功能一般都很一般,网速不好理所当然. 2.弄一根网线从客厅连接起来很傻 ...
- shell基础(三)
函数 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数: 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值: 3.必须 ...
- js 跳转的几种方法收藏
history.go(-n) 返回上一页(n 为返回前几页) window.location.reload(); 刷新当前页面 history.go(-1);window.locatoin.reloa ...
- GL 纹理 格式 资料备份
分别转载至:http://www.tuicool.com/articles/qAbYfq 和 http://www.verydemo.com/demo_c161_i114362.html 在手机 ...
- python uwsgi 部署以及优化
这篇文章其实两个月之前就应该面世了,但是最近琐事.烦心事太多就一直懒得动笔,拖到现在才写 一.uwsgi.wsgi.fastcgi区别和联系 参见之前的文章 http://www.cnblogs.co ...
- 使用JMX监控Kafka
监控数据源 JMX RMI方式启动Broker,Consumer,Producer -ea -Dcom.sun.management.jmxremote.authenticate=false -Dco ...