EF 4.2 Code First,如何使用流畅的API进行映射?

时间:2011-11-29 20:57:15

标签: c# entity-framework entity-framework-4 fluent-interface

(因为我有一个预定义的数据库,我不能让EF重新创建它)。

这是我现在使用的映射(有效,但我想使用流畅的api重写):

public class League
{        
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid LeagueId { get; set; }
    ....
    #region References

    public virtual ICollection<News> News { get; set; } 

    #endregion
}

public class News
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid NewsId { get; set; }
    public Guid LeagueId { get; set; }
    ....
    #region References

    [ForeignKey("LeagueId")]
    public virtual League League { get; set; }

    #endregion
}

现在,我如何使用流畅的API进行映射?

更新 写了这个并且它有效,但有更简单的版本吗?

modelBuilder.Entity<League>().HasMany(x => x.News).WithRequired(y => y.League).HasForeignKey(c => c.LeagueId);

更新2 我添加了课程中缺少的那些。但问题是,如果我把它留在那并尝试它,它就会失败。我需要在某处指定一个密钥。我不能让EF创建数据库,它拒绝只使用表。

1 个答案:

答案 0 :(得分:1)

您应该查看这篇文章,例如:http://www.codeproject.com/Articles/184133/Using-Entity-Framework-4-1-Code-First-with-an-exis 基础部分,您应该删除默认的db初始化程序:

Database.SetInitializer<YourContext>(null);

这样可以防止EF尝试更改数据库或抛出错误。它只会尝试使用你提供的东西。