আমি সমস্যাটি সমাধানের তিনটি উপায় পেয়েছি।
সত্তা ফ্রেমওয়ার্ক কোরে অনন্য সূচি:
প্রথম পদ্ধতির:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Entity>()
.HasIndex(p => new {p.FirstColumn , p.SecondColumn}).IsUnique();
}
বিকল্প কীগুলি ব্যবহার করে ইএফ কোরের সাথে স্বতন্ত্র সীমাবদ্ধতা তৈরির দ্বিতীয় পদ্ধতি ।
উদাহরণ
একটি কলাম:
modelBuilder.Entity<Blog>().HasAlternateKey(c => c.SecondColumn).HasName("IX_SingeColumn");
একাধিক কলাম:
modelBuilder.Entity<Entity>().HasAlternateKey(c => new [] {c.FirstColumn, c.SecondColumn}).HasName("IX_MultipleColumns");
EF 6 এবং নীচে:
প্রথম পদ্ধতির:
dbContext.Database.ExecuteSqlCommand(string.Format(
@"CREATE UNIQUE INDEX LX_{0} ON {0} ({1})",
"Entitys", "FirstColumn, SecondColumn"));
এই পদ্ধতির খুব দ্রুত এবং দরকারী কিন্তু মূল সমস্যা হ'ল সত্তা ফ্রেমওয়ার্ক এই পরিবর্তনগুলি সম্পর্কে কিছুই জানে না!
দ্বিতীয় পদ্ধতির:
আমি এই পোস্টে এটি খুঁজে পেয়েছি কিন্তু আমি নিজে চেষ্টা করেছিলাম না।
CreateIndex("Entitys", new string[2] { "FirstColumn", "SecondColumn" },
true, "IX_Entitys");
এই পদ্ধতির সমস্যাটি নিম্নলিখিত: এটির DbMigration দরকার তাই আপনার যদি এটি না থাকে তবে আপনি কী করবেন?
তৃতীয় পদ্ধতি:
আমি মনে করি এটি সেরা one তবে এটি করতে কিছুটা সময় প্রয়োজন। আমি আপনাকে কেবল এর পিছনে ধারণাটি দেখাব: এই লিঙ্কটিতে http://code.msdn.microsoft.com/CSASPNETUniqueConstraintInE-d357224a
আপনি অনন্য কী ডেটা টীকা দেওয়ার কোডটি খুঁজে পেতে পারেন:
[UniqueKey] // Unique Key
public int FirstColumn { get; set;}
[UniqueKey] // Unique Key
public int SecondColumn { get; set;}
// The problem hier
1, 1 = OK
1 ,2 = NO OK 1 IS UNIQUE
এই পদ্ধতির জন্য সমস্যা; আমি কীভাবে তাদের একত্রিত করতে পারি? উদাহরণস্বরূপ এই মাইক্রোসফ্ট বাস্তবায়নটি বাড়ানোর আমার ধারণা আছে:
[UniqueKey, 1] // Unique Key
public int FirstColumn { get; set;}
[UniqueKey ,1] // Unique Key
public int SecondColumn { get; set;}
পরে মাইক্রোসফ্ট উদাহরণে বর্ণিত আইডিটাবেসআইনিটিয়ালাইজারে আপনি প্রদত্ত পূর্ণসংখ্যা অনুযায়ী কীগুলি একত্রিত করতে পারেন। তবে একটি বিষয় অবশ্যই লক্ষণীয়: যদি অনন্য সম্পত্তিটি টাইপ স্ট্রিংয়ের হয় তবে আপনাকে ম্যাক্সেলেন্থ সেট করতে হবে।