2011-04-19 13 views
6

मैं प्रत्येक इकाई के लिए समर्पित मानचित्रण वर्गों के साथ एफई कोड पहले CTP5 उपयोग किया गया है, इस तरह:एफई 4.1 आरटीएम - EntityTypeConfiguration

public class UserMapping : EntityTypeConfiguration<User> 
{ 
    public UserMapping() 
    { 
     ToTable("Users"); 

     HasKey(t => t.ID); 
     Property(t => t.ID).HasColumnName("user_id"); 

     Property(t => t.Name).HasColumnName("name"); 
    } 
} 

और उन्हें जिस तरह से जोनास Cannehag लोड हो रहा है यहाँ का वर्णन करता है: http://areaofinterest.wordpress.com/2010/12/08/dynamically-load-entity-configurations-in-ef-codefirst-ctp5/

लेकिन यह आरटीएम में काम नहीं करता है और मैं यह समझने में सक्षम नहीं हूं कि समर्पित मैपिंग कक्षाओं का उपयोग कैसे किया जाए। क्या तुम? :-)

उत्तर

16
public class DataContext : DbContext 
{ 
    ... 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
      modelBuilder.Configurations.Add(new UserMapping());  
      base.OnModelCreating(modelBuilder); 
    } 
} 

गतिशील संस्करण (शायद उत्पादन में डालने से पहले व्यापक परीक्षण करना चाहिए)

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
      var typesToRegister = 
       Assembly.GetExecutingAssembly().GetTypes().Where(
        type => 
        type.BaseType.IsGenericType && 
        type.BaseType.GetGenericTypeDefinition() == typeof (EntityTypeConfiguration<>)); 

      foreach (object configurationInstance in typesToRegister.Select(Activator.CreateInstance)) 
      { 
       modelBuilder.Configurations.Add((dynamic) configurationInstance); 
      } 

      base.OnModelCreating(modelBuilder); 
     } 
+0

मेरे लिए बहुत ज्यादा गतिशील प्रतीत नहीं होता है। –

+0

क्या Ladislav ने कहा :-) –

+0

अद्यतन यह मान रहा है कि आपकी मैपिंग डीबीकॉन्टेक्स्ट और * निष्पादन * असेंबली के समान असेंबली में हैं। यदि नहीं, तो आप खंड कहां जोड़/हटा सकते हैं। – mxmissile

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