সত্তা ফ্রেমওয়ার্ক কোডটিতে প্রথমে কীভাবে একাধিক কলামে কীএট্রিবিউট ব্যবহার করতে হয়


95

সত্তা ফ্রেমওয়ার্ক কোডটি প্রথম সিটিপি 5 দিয়ে ব্যবহার করার জন্য আমি একটি পোকো মডেল তৈরি করছি। আমি পিকে কলামে একটি সম্পত্তি মানচিত্র তৈরি করতে সজ্জাটি ব্যবহার করছি। তবে আমি কীভাবে আরও একটি কলামে একটি পিকে সংজ্ঞায়িত করতে পারি এবং বিশেষত, আমি কীভাবে সূচীতে কলামগুলির ক্রম নিয়ন্ত্রণ করতে পারি? এটি শ্রেণীর বৈশিষ্ট্যগুলির ক্রমের ফলস্বরূপ?

ধন্যবাদ!

উত্তর:


155

উদাহরণস্বরূপ, আপনি গুণাবলী মধ্যে কলাম ক্রম নির্দিষ্ট করতে পারেন:

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

    [Key, Column(Order=1)]
    public int MySecondKeyProperty { get; set; }

    [Key, Column(Order=2)]
    public string MyThirdKeyProperty { get; set; }

    // other properties
}

আপনি যদি কোনওটির Findপদ্ধতি ব্যবহার করে থাকেন তবে DbSetআপনাকে অবশ্যই মূল পরামিতিগুলিকে অ্যাকাউন্টে নেওয়ার জন্য এই আদেশটি নিতে হবে।


4
অবৈধ অপারেশন এক্সসেপশন: সত্তা টাইপ 'XXX' তে ডেটা টীকা সহ সংশ্লেষিত প্রাথমিক কী রয়েছে। সম্মিলিত প্রাথমিক কী সেট করতে, সাবলীল এপিআই ব্যবহার করুন।
লুকা জিগলার

58

স্লুমার জমা দেওয়া সঠিক উত্তরটি সম্পূর্ণ করতে, আপনি মিশ্রিত প্রাথমিক কীগুলির জন্য কোনও অর্ডার নির্দিষ্ট করতে হাসকে পদ্ধতিটি ব্যবহার করতে পারেন :

public class User
{        
    public int UserId { get; set; }       
    public string Username { get; set; }        
}        

public class Ctp5Context : DbContext
{
    public DbSet<User> Users { get; set; }        

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().HasKey(u => new 
        { 
            u.UserId, 
            u.Username 
        });
    }
}

4
ধন্যবাদ - উভয় পদ্ধতিই ঠিকঠাক কাজ করে। আমি বৈশিষ্ট্যগুলিকে পছন্দ করি কারণ আমি কোড থেকে আমার ক্লাস উত্পন্ন করছি এবং বৈশিষ্ট্যগুলি আরও সংক্ষিপ্ত।
গিলশালিত

আমি ব্যক্তিগতভাবে প্রপ্টিটি (এক্স ...) যুক্ত করি each প্রতিটি কীড বৈশিষ্ট্যে হ্যাশ কলামআর্ডার (0 ... এন)। এটা কি ভাল, খারাপ, উদাসীন?
সুমেরে

8

যদি আমার মতো, আপনি কোনও কনফিগারেশন ফাইল ব্যবহার করতে পছন্দ করেন তবে আপনি এটি করতে পারেন (মানবীর উদাহরণের ভিত্তিতে):

public class User
{
    public int UserId { get; set; }
    public string Username { get; set; }
}  

public class UserConfiguration : EntityTypeConfiguration<User>
{
    public UserConfiguration()
    {
        ToTable("Users");
        HasKey(x => new {x.UserId, x.Username});
    }
}

স্পষ্টতই আপনাকে কনফিগারেশন ফাইলটি আপনার প্রসঙ্গে যুক্ত করতে হবে:

public class Ctp5Context : DbContext
{
    public DbSet<User> Users { get; set; }        

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
         modelBuilder.Configurations.Add(new UserConfiguration());
    }
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.