(因为我有一个预定义的数据库,我不能让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创建数据库,它拒绝只使用表。
答案 0 :(得分:1)
您应该查看这篇文章,例如:http://www.codeproject.com/Articles/184133/Using-Entity-Framework-4-1-Code-First-with-an-exis 基础部分,您应该删除默认的db初始化程序:
Database.SetInitializer<YourContext>(null);
这样可以防止EF尝试更改数据库或抛出错误。它只会尝试使用你提供的东西。