做网站购买服务器吗,网站建设维护属于什么专业,网站设计制作需要多少钱,六安网站开发一. 简介
1. DataAnnotations说明#xff1a;EF提供以特性的方式添加到 domain classes上,其中包括两类#xff1a; A#xff1a;System.ComponentModel.DataAnnotations命名空间下的特性是表中列的属性的。 包括#xff1a;Key、Required、MinLength和MaxLength、StringL…一. 简介
1. DataAnnotations说明EF提供以特性的方式添加到 domain classes上,其中包括两类 ASystem.ComponentModel.DataAnnotations命名空间下的特性是表中列的属性的。 包括Key、Required、MinLength和MaxLength、StringLength、Timestamp、ConcurrencyCheck。 BSystem.ComponentModel.DataAnnotations.Schema命名空间下的特性是控制数据库结构的。 包括Table、Column、ForeignKey、NotMapped。
2. 特性介绍 ① Key 声明主键 ② Required非空声明 ③ MinLength和MaxLength设置string类型的最大长度和最小长度,数据库的对应nvarchar ④ StringLength:设置string类型的长度数据库对应nvarchar ⑤ Timestamp:将byte[]类型设置为timestamp类型 ⑥ ConcurrencyCheck:并发检查,执行update操作时,会检查并发性(乐观锁) ⑦ Table: 给代码中的类换一个名来映射数据库中的表名.还可以设置表的架构名称 [Table(myAddress, Schema Admin)] ⑧ Column: 给代码中类的属性换一个名来映射数据库中表的列名. (还可以设置列的类型、列在表中的显示顺序 [Column(myAddressName2, Order 1, TypeName varchar)]) ⑨ ForeignKey:设置外键特别注意里面的参数填写什么. ⑩ NotMapped: 类中的列名不在数据库表中映射生成. 还可以只设置get属性或者只设置set属性,在数据库中也不映射 另外还有Index、InverseProperty、DatabaseGenerated、ComplexType 这四个都不常用,在这里就不多介绍了 (详细可以看http://www.entityframeworktutorial.net/code-first/dataannotation-in-code-first.aspx) 二. 代码实战 1 public class Student42 {3 [Key] //主键声明4 public string studentKey { get; set; }5 6 [Required] //非空声明7 public string stuName { get; set; }8 9 [MaxLength(10)] //最大长度
10 public string stuTxt1 { get; set; }
11
12 [MaxLength(10), MinLength(2)] //最大长度和最小长度
13 public string stuTxt2 { get; set; }
14
15 [Timestamp] //设置为时间戳
16 public byte[] rowVersion { get; set; }
17
18 [ConcurrencyCheck] //并发检查
19 public string stuTxt3 { get; set; }
20
21
22
23 public virtual StudentAddress4 stuAddress4 { get; set; }
24 }
25
26
27 [Table(myAddress)] //设置类映射的数据库表名
28 //[Table(myAddress, Schema Admin)] //设置类映射的数据库表名和架构名
29 public class StudentAddress4
30 {
31 [ForeignKey(stu)] //设置外键(对应下面声明的 stu) //这里符合 类名id(忽略大小写)的规则所以自动生成主键
32 public string studentAddress4Id { get; set; }
33
34 [Column(myAddressName)] //设置映射数据库中表的列名
35 public string stuAddressName { get; set; }
36
37 [Column(myAddressName2, Order 1, TypeName varchar)] //设置映射数据库中表的列名、顺序、类型
38 public string stuAddrssName2 { get; set; }
39
40 [NotMapped]//不映射数据
41 public string addressNum { get; set; }
42
43 //不映射数据
44 public string txt1 { get { return stuAddrssName2;} }
45
46 //不映射数据
47 public string _txt2 1;
48 public string txt2 { set { _txt2 value; } }
49
50 public virtual Student4 stu { get; set; }
51
52 } 1 public class dbContext4 : DbContext2 {3 public dbContext4()4 : base(namedbContext4)5 {6 7 }8 public DbSetStudent4 Student4 { get; set; }9
10 public DbSetStudentAddress4 StudentAddress4 { get; set; }
11
12
13 protected override void OnModelCreating(DbModelBuilder modelBuilder)
14 {
15 base.OnModelCreating(modelBuilder);
16 }
17 } 1 !--正宗的CodeFirst DataAnnotation--
2 add namedbContext4 connectionStringdata sourcelocalhost;initial catalogCodeFirstDB4;persist security infoTrue;user idsa;password123456;MultipleActiveResultSetsTrue;AppEntityFramework providerNameSystem.Data.SqlClient /
3 三. 总结 DataAnnotations通过注解形式改变数据库结构非常灵活当然EF还提供另外一种方式 Fluent API的形式可以将一个类映射成多个数据库表还可以将配置写成多个文件方便控制。 关于Fluent API更多用法详解下一个章节。