2011-07-21 35 views
1

當從EF 4.0升級工作的項目到4.1後,我現在收到以下錯誤在運行時:EF 4.1:升級後的錯誤映射一個實體到多個表

地圖被稱爲比一次更輸入'Everybody'並且至少有一個調用沒有指定目標表名稱。

的代碼是:

public EverybodyConfiguration() 
{ 
    Map(e => e.Properties(p => new 
    { 
    p.EverybodyId, 
    p.FirstName, 
    p.LastName, 
    p.Initials, 
    p.CapsId, 
    p.DateModified 
    })).ToTable("Everybody"); 

    Map(e => e.Properties(p => new 
    { 
    p.EverybodyId, 
    p.Status 
    })).ToTable("EverybodyStatus"); 

    Map(e => e.Properties(p => new 
    { 
    p.EverybodyId, 
    p.Email, 
    p.BouncedFlag, 
    p.DoNotContactFlag 
    })).ToTable("EverybodyEmail"); 
} 

錯誤信息是混亂的,因爲它表明表名稱尚未指定的地方,但你可以在它的代碼中看到。

這些表都具有相同的主鍵列名稱。

有什麼建議嗎?

回答

1

您調用ToTable是整個實體的映射(鏈接在Map之後,方法EntityTypeConfiguration)。您必須使用EntityMappingConfiguration這是Action傳遞的參數的方法ToTableMap

public EverybodyConfiguration() 
{ 
    Map(c => 
    { 
     c.Properties(p => new 
     { 
      p.EverybodyId, 
      p.FirstName, 
      p.LastName, 
      p.Initials, 
      p.CapsId, 
      p.DateModified 
     }); 
     c.ToTable("Everybody"); 
    }); 

    Map(c => 
    { 
     c.Properties(p => new 
     { 
      p.EverybodyId, 
      p.Status 
     }); 
     c.ToTable("EverybodyStatus"); 
    }); 

    Map(c => 
    { 
     c.Properties(p => new 
     { 
      p.EverybodyId, 
      p.Email, 
      p.BouncedFlag, 
      p.DoNotContactFlag 
     }); 
     c.ToTable("EverybodyEmail"); 
    }); 
} 
+0

完美。謝謝。奇怪它在4.0中工作。 – gxclarke

+0

上帝保佑你! :) – vk5880