(主键)

一个键作为每个实体实例的主要唯一标识符。当使用关系数据库时,这映射到主键的概念。你也可以配置一个唯一的不是主键的标识符, (看Alternate Keys更多的信息)

 

在这文章中:

键(主键)

     公约

数据注解

Fluent API

 

公约

 

按惯例,一个命名为ID或<Type Name>ID的属性将被配置为一个实体的键。

 

class Car

    {

        public string Id { get; set; }

 

        public string Make { get; set; }

        public string Model { get; set; }

    }

 

class Car

    {

        public string CarId { get; set; }

 

        public string Make { get; set; }

        public string Model { get; set; }

    }

 

数据注解

 

你能使用数据注解来配置一个单一的属性作为一个实体的键

 

class Car

    {

        [Key]

        public string LicensePlate { get; set; }

 

        public string Make { get; set; }

        public string Model { get; set; }

    }

 

Fluent API

 

你能使用Fluent API来配置一个单一属性作为一个实体的键

 

class MyContext : DbContext

    {

        public DbSet<Car> Cars { get; set; }

 

        protected override void OnModelCreating(ModelBuilder modelBuilder)

        {

            modelBuilder.Entity<Car>()

                .HasKey(c => c.LicensePlate);

        }

    }

 

    class Car

    {

        public string LicensePlate { get; set; }

 

        public string Make { get; set; }

        public string Model { get; set; }

    }

 

 

你也能使用Fluent API来配置多个属性作为实体的键(称为复合键)复合键只能使用Fluent API来配置-惯例将永远不会建立一个复合键并且你不能使用数据注解来配置。

 

class MyContext : DbContext

    {

        public DbSet<Car> Cars { get; set; }

 

        protected override void OnModelCreating(ModelBuilder modelBuilder)

        {

            modelBuilder.Entity<Car>()

                .HasKey(c => new { c.State, c.LicensePlate });

        }

    }

 

    class Car

    {

        public string State { get; set; }

        public string LicensePlate { get; set; }

 

        public string Make { get; set; }

        public string Model { get; set; }

    }

posted on 2016-11-02 20:49  凯胜  阅读(270)  评论(0)    收藏  举报