সত্তা ফ্রেমওয়ার্ক 6.1+ এ আপনি আপনার মডেলটিতে এই বৈশিষ্ট্যটি ব্যবহার করতে পারেন:
[Index(IsUnique=true)]
আপনি এই নামস্থানটিতে এটি পেতে পারেন:
using System.ComponentModel.DataAnnotations.Schema;
যদি আপনার মডেল ক্ষেত্রটি একটি স্ট্রিং হয় তবে নিশ্চিত হয়ে নিন যে এটি এসকিউএল সার্ভারে nvarchar (MAX) তে সেট করা নেই বা আপনি প্রথমে সত্ত্বা ফ্রেমওয়ার্ক কোডের মাধ্যমে এই ত্রুটিটি দেখতে পাবেন:
টেবিলের 'dbo.y' কলামে 'x' এমন এক ধরণের যা সূচকে কী কলাম হিসাবে অবৈধ use
এর কারণ হ'ল:
এসকিউএল সার্ভার সমস্ত সূচক কী কলামগুলির সর্বোচ্চ মোট আকারের জন্য 900-বাইট সীমা ধরে রাখে retain
(থেকে: http://msdn.microsoft.com/en-us/library/ms191241.aspx )
আপনি আপনার মডেলটিতে সর্বাধিক স্ট্রিং দৈর্ঘ্য সেট করে এটি সমাধান করতে পারেন:
[StringLength(450)]
আপনার মডেলটি এখন এএফ সিএফ 6.1+ তে দেখতে পাবেন:
public class User
{
public int UserId{get;set;}
[StringLength(450)]
[Index(IsUnique=true)]
public string UserName{get;set;}
}
হালনাগাদ:
যদি আপনি সাবলীল ব্যবহার করেন:
public class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
// ....
Property(x => x.Name).IsRequired().HasMaxLength(450).HasColumnAnnotation("Index", new IndexAnnotation(new[] { new IndexAttribute("Index") { IsUnique = true } }));
}
}
এবং আপনার মডেলবিল্ডারে ব্যবহার করুন:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// ...
modelBuilder.Configurations.Add(new UserMap());
// ...
}
আপডেট 2
সত্তা ফ্রেমওয়ার্ককোর জন্য এই বিষয়টিও দেখুন: https://github.com/aspnet/EntityFrameworkCore/issues/1698
আপডেট 3
EF6.2 এর জন্য দেখুন: https://github.com/aspnet/EntityFramework6/issues/274
আপডেট 4
EF কোর সহ এএসপি.নেট কোর এমভিসি 2.2:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Unique { get; set; }