2013-01-12 11 views
10

मुझे फ्लेंट एपीआई में एक से कई रिलेशनशिप सिंटैक्स नहीं मिल रहे हैं।फ़्लुएंट एपीआई - कई

एक उदाहरण के रूप में मैं दो तालिकाओं है नीचे

उपयोगकर्ता

Id 
Name 

UserHistory

Id 
UserId 
Date 

कक्षाओं में के रूप में मैं निम्नलिखित है

public class User 
{ 
    public int Id { get; set; } 
    public virtual ICollection<UserHistory> Histories { get; set; } 
} 

public class UserHistory 
{ 
    public int Id { get; set; } 
    public int UserId { get; set; } 
    public DateTime Date { get; set; } 
} 

मैंने निम्नलिखित कोशिश की है लेकिन मुझे यकीन नहीं है कि यह वास्तव में सही है या नहीं।

modelBuilder.Entity<User>() 
     .HasRequired(w => w.Histories) 
     .WithMany(); 

modelBuilder.Entity<User>() 
     .HasMany(f => f.Histories) 
     .WithOptional() 
     .HasForeignKey(f => f.UserId); 

एक से कई रिश्तों के लिए सही वाक्यविन्यास क्या है?

तकनीकी रूप से मैं इसे एक नई तालिका जोड़कर कई लोगों को तोड़ सकता हूं लेकिन मैं एक और टेबल पेश नहीं करना चाहता था।

उत्तर

24

अपने मॉडल में एक User इकाई कई साथ Historiesप्रत्येक इतिहास एक आवश्यकUser आ रही है, और रिश्ते एक विदेशी कुंजीUserId कहा जाता है:

modelBuilder.Entity<User>() 
    .HasMany(u => u.Histories) 
    .WithRequired() 
    .HasForeignKey(h => h.UserId); 

(संबंध आवश्यक होना चाहिए (वैकल्पिक नहीं) क्योंकि विदेशी कुंजी संपत्ति UserId nullab नहीं है ले।)

+1

यदि उपयोगकर्ता हिस्ट्री उपयोगकर्ता आईडी शून्य था, तो यह withOptional() होगा? – fes

+1

@fes: हाँ, ठीक है। – Slauma

संबंधित मुद्दे