ইএফ কোড প্রথম সাবলীল এপিআই সহ এটি অসম্ভব। ডাটাবেসে বিদেশী কী বাধা তৈরি করতে আপনার সর্বদা কমপক্ষে একটি নেভিগেশন সম্পত্তি প্রয়োজন।
আপনি যদি কোড ফার্স্ট মাইগ্রেশন ব্যবহার করেন তবে প্যাকেজ ম্যানেজার কনসোলটিতে নতুন কোড ভিত্তিক মাইগ্রেশন যুক্ত করার বিকল্প রয়েছে add-migration SomeNewSchemaName
। আপনি যদি আপনার মডেল বা ম্যাপিংয়ের সাথে কিছু পরিবর্তন করেন তবে একটি নতুন স্থানান্তর যুক্ত করা হবে। আপনি যদি কিছু পরিবর্তন না করেন তবে নতুন মাইগ্রেশন ব্যবহার করে জোর করে add-migration -IgnoreChanges SomeNewSchemaName
। এই ক্ষেত্রে মাইগ্রেশনটিতে কেবল খালি Up
এবং Down
পদ্ধতি থাকবে।
তারপরে আপনি Up
পদ্ধতিটিতে ফলওয়ে যোগ করে এটি পরিবর্তন করতে পারেন :
public override void Up()
{
AddForeignKey("ChildTableName", "ParentId", "ParentTableName", "Id",
cascadeDelete: true);
CreateIndex("ChildTableName", "ParentId");
}
এই মাইগ্রেশন চালানো ( update-database
প্যাকেজ পরিচালনা কনসোলে) এটির মতো এসকিউএল স্টেটমেন্ট চালাবে (এসকিউএল সার্ভারের জন্য):
ALTER TABLE [ChildTableName] ADD CONSTRAINT [FK_SomeName]
FOREIGN KEY ([ParentId]) REFERENCES [ParentTableName] ([Id])
CREATE INDEX [IX_SomeName] ON [ChildTableName] ([ParentId])
বিকল্পভাবে, মাইগ্রেশন ব্যতীত, আপনি কেবল একটি খাঁটি এসকিউএল কমান্ড ব্যবহার করে চালাতে পারেন
context.Database.ExecuteSqlCommand(sql);
যেখানে context
আপনার উদ্ভূত প্রসঙ্গ শ্রেণীর উদাহরণ রয়েছে এবং sql
স্ট্রিং হিসাবে কেবল উপরের এসকিউএল কমান্ড।
সচেতন থাকুন যে এই সমস্ত EF এর সাথে কোনও ParentId
সম্পর্ক নেই যা বিদেশী কী বলে কোনও ক্লু নেই । EF এটিকে কেবল একটি সাধারণ স্কেলারের সম্পত্তি হিসাবে বিবেচনা করবে। কেবলমাত্র একটি এসকিউএল পরিচালন সরঞ্জাম খোলার এবং হাত দ্বারা প্রতিবন্ধকতা যুক্ত করার তুলনায় উপরের সমস্তগুলি কেবল আরও জটিল এবং ধীর পথ।