EF代码优先:多对多+附加财产

时间:2011-11-02 18:51:46

标签: c# .net entity-framework entity-framework-4.1 ef-code-first

我有以下表格:Country,Language和Country2Language

Country2Language是创建M:M关系的链接表,它使用Fluent Mapping定义:

mb.Entity<Country>()                             
  .HasMany(e => e.Languages)
  .WithMany(set => set.Countries)                
  .Map(mc =>
         {
           mc.ToTable("Country2Language");
           mc.MapLeftKey("CountryShortName");
           mc.MapRightKey("LanguagesID");                            
         }
      );  

我的问题:如何添加额外的DateTime“DateCreated”属性?

2 个答案:

答案 0 :(得分:1)

您必须为映射创建一个映射到表的实体。

public class Country2Language {
    [Key] 
    [Column(Order = 0)] 
    [ForeignKey("CountryShortName")] 
    public int CountryShortname{ get; set; } 

    [Key] 
    [Column(Order = 1)] 
    [ForeignKey("LanguagesID")] 
    public int LanguagesID { get; set; } 

    public DateTime DateCreated {get; set;}
}

答案 1 :(得分:1)

是否可以使用创建的列创建表,然后将数据库中的默认值设置为GetTime函数(或者它是什么)?然后只需使用左/右映射,让db自动处理创建的默认值?

我曾经遇到过以下问题,如果你没有指定列是db生成的值,那么EF想要将null插入列中,但事实上这是为了多对多关系,它可能不会“甚至知道它在那里,应该总是让它成为默认值。