EF 4.1 কোড সহ প্রথম যৌগিক কী


105

আমি EF কোড প্রথম 4.1 আরসি ব্যবহার করে একটি সংমিশ্রিত কী কীভাবে রাখব তা জানার চেষ্টা করছি।

বর্তমানে, আমি [কী] ডেটা টিকাটি ব্যবহার করছি তবে আমি একাধিক কী নির্দিষ্ট করতে অক্ষম।

কিভাবে একটি যৌগিক কী নির্দিষ্ট করতে হবে?

এখানে আমার উদাহরণ:

 public class ActivityType
{
    [Key]
    public int ActivityID { get; set; }

    [Required(ErrorMessage = "A ActivityName is required")]
    [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
    public string ActivityName { get; set; }

}

আমি কী হতে চাই "ক্রিয়াকলাপ" need অবশ্যই, আমি এগুলির চারপাশে কোড করতে পারি, তবে এটি ভাল ডাটাবেস ডিজাইন নয়।

উত্তর:


186

আপনি টীকা দিয়ে উভয় ActivityIDএবং ActivityNameবৈশিষ্ট্য চিহ্নিত Keyকরতে পারেন বা আপনি @ টায়লোনারের বর্ণিত হিসাবে সাবলীল এপিআই ব্যবহার করতে পারেন।

সম্পাদনা:

এটি কাজ করা উচিত - টীকাগুলির সাথে সংজ্ঞায়িত সংমিশ্রিত কীটির সুস্পষ্ট কলামের আদেশ প্রয়োজন:

public class ActivityType
{
    [Key, Column(Order = 0)]
    public int ActivityID { get; set; }

    [Key, Column(Order = 1)]
    [Required(ErrorMessage = "A ActivityName is required")]
    [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
    public string ActivityName { get; set; }

}

আমি দেখি. আমাকে আপডেট করার জন্য ধন্যবাদ। উত্তর হিসাবে চিহ্নিত করা হয়েছে।
বুগুনুকার

1
যাইহোক অনন্য সীমাবদ্ধতা / সূচকগুলি যুক্ত করতে যা আসলে কী নয়?
শিমি ওয়েটজ্যান্ডলার

105

আমরা টীকাগুলি ব্যবহার করি না, পরিবর্তে আমরা মডেল নির্মাতাকে ওভাররাইড করি, সেক্ষেত্রে আপনি যেমন কিছু করতে পারেন:

modelBuilder.Entity<Activity>().HasKey(a => new { a.ActivityId, a.ActivityName });

এটি কাজ করে, তবে আমি এমন একটি টীকাটি আশা করি যা কাজ করে। সিটিপি 4 সহ নমুনাগুলি ছিল তবে এগুলি আর 4.1
আরসিতে

3
আমি জানি আপনি টীকাগুলি সন্ধান করছেন, তবে ভেবেছিলেন এটি অনুসন্ধানে সহায়তা করতে পারে ... যেমন আমি বলেছিলাম যে আমরা টীকাগুলি ব্যবহার করছি না সুতরাং সেখানে আমি খুব বেশি সহায়তা পাই নি ... আশা করি আপনি উত্তরটি খুঁজে
পেয়েছেন

14
আমি এই পদ্ধতির পছন্দ। মডেলটিকে কনটেক্সট উদ্বেগগুলি থেকে পরিষ্কার রাখে। ধন্যবাদ.
ctorx

কেউ কি জানেন যে সাবলীল এপিআই ব্যবহার করে যৌগিক প্রাথমিক কী সেট করা এসকিউএল সিই এর জন্য কাজ করে? এটি আমার পক্ষে কাজ করে না (একটি ত্রুটি দেয় যে 'সত্তা টাইপের ... কোনও কী সংজ্ঞায়িত হয়নি') এবং আমি একটি নতুন প্রশ্ন তৈরি করব কিনা তা নিশ্চিত নই।
ক্যাসিটান

আপনি যদি ইউনিট পরীক্ষার উদ্দেশ্যে আপনার ডিবি কনটেক্সটকে উপহাস করেন, সত্তা এবং / অথবা সংমিশ্রিত প্রাথমিক কীগুলির মধ্যে সম্পর্কটি সংজ্ঞায়িত করার জন্য আপনি কীভাবে নিশ্চিত হন যে মডেল বিল্ডার কার্যকর করা হয়েছে?
জিম আহো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.