zoukankan      html  css  js  c++  java
  • EntityFramework code first 一些常用的约束特性

    参阅: https://msdn.microsoft.com/en-us/library/jj591583(v=vs.113).aspx

    1. 主键

    public class Test
        {
            //名称为 ID 的属性会自动映射为主键(自增长,唯一性,不为空)
            public long ID { get; set; }
        }
        public class Test
        {
            //Key 特性可将属性映射为主键(自增长,唯一性,不为空)
            [Key]
            public string Key { get; set; }
        }
        public class Test
        {
            //Key 特性可将属性映射为主键
            //使用 DatabaseGenerated 特性可取消主键自增长
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public long ID { get; set; }
        }
        public class Test
        {
            // Guid 类型的主键默认没有自动生成,所以记得设置 DatabaseGenerated 特性
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public Guid ID { get; set; }
        }

    2. 外键

        public class TestA
        {
            public long ID { get; set; }
            public string Name { get; set; }
            //导航属性, 子表集合
            public virtual ObservableCollection<TestB> TestBs { get; set; }
        }
    
        public class TestB
        {
            public long ID { get; set; }
            //外键, 命名约定为: 主表类名+主表主键名
            public long TestAID { get; set; }
            //导航属性, 主表类对象(与主表的导航属性可二选一)
            public virtual TestA TestA { get; set; }
            public DateTime DateTime { get; set; }
        }

    3. 使用 [NotMapped] 特性可取消属性到数据库的映射,即在操作数据库时忽略此属性,创建数据库时也不会创建此字段

    4. 唯一性,EntityFramework没有[Unique]特性,但6.1+版本可以使用[Index]特性实现唯一性(唯一性约束与唯一性索引基本相同,都可以实现字段的唯一性)

        当[Index]特性的IsUnique=true时会有一个字符限制(好像是限制为900字节),所以要添加一个长度限制的特性

        public class User
        {
            public int ID { get; set; }
    
            [Index(IsUnique = true)]
            [StringLength(200)]
            public string UserName { get; set; }
    
            public string DisplayName { get; set; }
        }
  • 相关阅读:
    USACO Meteor Shower
    小技巧—取模防负
    CSP-S2019 D2T1 Emiya家今天的饭
    重谈DFS序、时间戳和欧拉序
    JDOJ 1842 Magictree
    CSP-S2019 D1T1 格雷码
    洛谷 P3919 【模板】可持久化线段树 1(可持久化数组)
    node+express api编写实战(一):环境安装及启动
    宝塔pureftpd设置FTP后,可连接,但无法上传、新建、覆盖文件的解决方法
    flex布局、css3选择器
  • 原文地址:https://www.cnblogs.com/gmcn/p/5870186.html
Copyright © 2011-2022 走看看