Entity Framework中的DataAnnotations

简介:

Model使用DataAnnotations定义数据库和验证

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema

注意这里的验证会在web客户端和EF端同时验证。

[Key]

数据库: 定义主键

[Required]

数据库: 会把字段设置成not null

验证: 会要求必须输入

是否可以为null [Required(AllowEmptyStrings = false)] 不能为null和空字符串

[MaxStringLegth]

数据库: 字段长度

验证: 验证是否超出长度

[MinStringLegth]

验证: 验证是否长度不够

[NotMapped]

不和数据库匹配的字段,比如数据库存了First Name, Last Name, 我们可以创建一个属性Full Name, 数据库中没有,但是可以使用到其它地方。

[ComplexType]

复杂类型,当你想用一个表,但是表中其它的列做成另外一个类,这个时候可以使用.

比如这里BlogDetails是Blog表的一部分,在Blog类中有个属性是BlogDetails

复制代码
[ComplexType]
public class BlogDetails
{
    public DateTime? DateCreated { get; set; }
    [MaxLength(250)]
    public string Description { get; set; }
}
复制代码

 

实际的表结构就会是这样:

jj591583_figure06(en-us,MSDN_10)

[ConcurrencyCheck]

表示并发标识, 标记为ConcurrencyCheck的列,会在更新数据前,检查有没有改变,如果改变了,说明期间发生过数据修改。这个时候会导致操作失败,出现DbUpdateConcurrencyException

[Timestamp]

这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的。timestamp 一般用作给表行加版本戳的机制。存储大小为 8 字节. 所以对应的.net 类型是Byte[]

一个表只能有一个 timestamp 列.

[Table] [Column]

用来表示数据库匹配的细节

[Table("InternalBlogs")]
public class Blog
[Column("BlogDescription", TypeName="ntext")]
public String Description {get;set;}

 

[DatabaseGenerated]

数据库中有些字段是触发器类似的创造的数据,这些不希望在更新的时候使用, 但是又想在读取出来,可以用这个标记

[DatabaseGenerated(DatabaseGenerationOption.Computed)]
public DateTime DateCreated { get; set; }

 

[ForeignKey]

复制代码
public class Post
{
    public int Id { get; set; }
    public string Title { get; set; }  
    public DateTime DateCreated { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    [ForeignKey("BlogId")]
    public Blog Blog { get; set; }
    public ICollection<Comment> Comments { get; set; }
}
复制代码

 

[InverseProperty]

如果子表使用了ForeignKey, 父表又使用字表的Collection对象会导致,在子表中生成多个外键

这个时候,需要在父表类中的子表Collection对象上添加上这个Attribute表明会重用子对象的哪个属性作为外键。



本文转自JustRun博客园博客,原文链接:http://www.cnblogs.com/JustRun1983/archive/2012/09/26/2703241.html,如需转载请自行联系原作者

目录
相关文章
|
XML 存储 数据库连接
Entity Framework学习笔记——edmx文件
上文简单介绍了一下Entity FrameWork,这里说一下EF的核心——edmx文件。 在VisualStudio中建立edmx文件(此例环境为VisualStudio2012)
Entity Framework学习笔记——edmx文件
|
数据库
Entity Framework Core介绍(1)
介绍 Entity Framework (EF) Core 是轻量化、可扩展和跨平台版的常用 Entity Framework 数据访问技术。 EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。
997 0
|
存储 开发框架 .NET
Entity Framework基础01
Entity Framework基础01
197 0
Entity Framework基础01
|
数据库 数据库管理
Entity Framework 小知识(一)
Entity Framework 小知识(一)
128 0
|
索引
Entity Framework 小知识(四)
Entity Framework 小知识(四)
136 0
|
数据库
Entity Framework 小知识(三)
Entity Framework 小知识(三)
148 0
|
数据库
Entity Framework 小知识(五)
Entity Framework 小知识(五)
135 0
|
SQL 数据库
Entity Framework 小知识(二)
Entity Framework 小知识(二)
171 0
|
SQL 开发框架 Oracle
Entity Framework简介
Entity Framework简介
183 0
|
数据库 容器
Entity Framework Core(3)-配置DbContext
设计时 DbContext 配置 EF Core 设计时工具如迁移需要能够发现和创建的工作实例DbContext以收集有关应用程序的实体类型以及它们如何映射到数据库架构的详细信息的类型。 此过程可以为自动,只要该工具可以轻松地创建DbContext,会将其配置同样到它如何将配置在运行时的方式。
945 0