Entity Framework DataAnnotations

简介: 原文:Entity Framework DataAnnotations前言 DataAnnotation 特性由.NET 3.5中引进,给.NET中的类提供了一种添加验证的方式。但是在EF中它又可以对映射关系进行控制,相比较Fluent API使用起来要简单一些。
原文: Entity Framework DataAnnotations

前言

DataAnnotation 特性由.NET 3.5中引进,给.NET中的类提供了一种添加验证的方式。但是在EF中它又可以对映射关系进行控制,相比较Fluent API使用起来要简单一些。

DataAnnotation特性列举

DataAnnotation由命名空间System.ComponentModel.DataAnnotations提供。下面列举实体模型中常用的DataAnnotation特性:

1.KeyAttribute:对数据库中表的主键的设置

        [Key]
        public int OrderID { get; set; }

 2.RequiredAttribute:对应数据库中字段的数据是否可以为null

        [Required]
        public string OrderName { get; set; }

 3.MaxLengthAttribute:对应数据库中字符串类型字段的最大长度

        [MaxLength(60)]
        public string Employee{get;set;}

 4.MinLengthAttribute:在数据库中无对应,但在代码中字符串最小长度

        [MaxLength(60),MinLength(10)]
        public string Employee{get;set;}

 5.ConcurrencyCheckAttribute:指定用于开放式并发检查的列的数据类型

        [ConcurrencyCheck]
        public string Address { get; set; }

 6.TimestampAttribute:将列的数据类型指定为行版本

        [Timestamp]
        public byte[] TimeStamp { get; set; }

 System.ComponentModel.DataAnnotations命名空间中只定义了部分实体验证的特性,在EntityFramework程序集中定义了更多的数据映射特性

7.DatabaseGeneratedAttribute:标记指定实体属性是由数据库生成的,并指定生成策略(None数据库不生成值,Identity当插入行时,数据库生成值,Computed当插入或更新行时,数据库生成值)

        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
        public DateTime CreateDate { get; set; }

 8.ColumnAttribute:指定实体属性在数据库中的列名及数据类型

        [Column("Notes", TypeName = "ntext")]
        public string Note { get; set; }

 9.TableAttribute:指定实体类对应的数据表名

    [Table("Order",Schema="Order")]
    public class Order

 10.ForeignKeyAttribute:指定导航属性的外键字段

    public class Customer
    {
        public int ID { get; set; }

        public string Name { get; set; }
    }
        [ForeignKey("ID")]
        public Customer customer { get; set; }

 11.NotMappedAttribute:标记指定实体属性在创建数据库中不创建对应字段

        [NotMapped]
        public string PhotoPath { get; set; }

 12.ComplexTypeAttribute:标记指定实体属性是将一个对象作为另一个对象的属性,映射到数据库中则子对象表现为多个属性字段

[ComplexType]

public class Name { public string FirstName { get; set; } public string LastName { get; set; } } public Name Name { get; set; }

 对于实体关系对应的数据表关系,无非“0:1,1:1,0:N,1:N,N:N”这几种,可以使用导航属性中的数据类型来表示,0…1端使用单实体类型表 示,N端使ICollection<T>集合类型表示。对于单实体端,默认是可为空的,即为0关系,如果要设置为1关系,要使用 [Required]标签来进行标记。但对于一对一中的关系主体与依赖对象确无法做更细节的控制。

注意:DataAnnotations可以同时在同一个类后者属性上使用多个标记属性,上面的例子中对于每个类或属性只使用了一个单独的标记属性是为了说明起来更加简单;另外声明的例子中同时使用“ConcurrencyCheck”和“TimeStamp”指定了不同的列只是为了演示,一般情况下我们通过其中一种方式即可。 

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