Is it possible to set a unique constraint using Entity Framework Code First?

后端 未结 3 1923
我寻月下人不归
我寻月下人不归 2020-12-18 17:20

I want to enforce Unique constraint in a table & I am using Entity Framework Code-First.

Is it possible to add a unique constraint using EF 6 as i believe in ear

相关标签:
3条回答
  • 2020-12-18 18:00

    Use this to define it in config class, if you're avoiding using annotations:

    public class YourTableConfig : EntityTypeConfiguration<YourTableEntity>
    {
      public YourTableConfig()
      {
        ToTable("YourTableDbName");
    
        HasKey(u => u.Id);
    
        Property(c => c.CompanyId).HasColumnType("nvarchar").HasMaxLength(9).IsRequired();
    
        HasIndex(x => x.CompanyId).IsUnique(); // This sets the unique index
      }
    }
    
    0 讨论(0)
  • 2020-12-18 18:08

    Let's say that you want to add the Unique constraint on only one attribute, you can do as following, starting from EF6.1

    [Index(IsUnique = true)]
    public string Username { get; set; }
    

    If you have multiple fields that are related to the same index then you are going to use:

    Multiple-Column Indexes

    Indexes that span multiple columns are specified by using the same name in multiple Index annotations for a given table. When you create multi-column indexes, you need to specify an order for the columns in the index. For example, the following code creates a multi-column index on Rating and BlogId called IX_BlogAndRating. BlogId is the first column in the index and Rating is the second.

    public class Post 
    { 
        public int Id { get; set; } 
        public string Title { get; set; } 
        public string Content { get; set; } 
        [Index("IX_BlogIdAndRating", 2)] 
        public int Rating { get; set; } 
        [Index("IX_BlogIdAndRating", 1)] 
        public int BlogId { get; set; } 
    }
    

    Please refer to this link for further information.

    0 讨论(0)
  • 2020-12-18 18:12

    It appears that the unique constraint feature that was scheduled to release with Version 6 got pushed to 6.1.

    With EF 6.1, you can define a constraint using the Index attribute as shown below:

    [Index("IX_FirstAndSecond", 1, IsUnique = true)]
    public int FirstColumn { get; set; }
    
    [Index("IX_FirstAndSecond", 2, IsUnique = true)]
    public int SecondColumn { get; set; }
    

    OR

    You can use Fluent API as shown here in MSDN

    0 讨论(0)
提交回复
热议问题