我有两张桌子,我想加入游戏和细节。游戏有一个细节
问题是我无法正确绑定表格。我得到的错误是
“实体类型'游戏'和'详细信息'不能共享表'详细信息',因为它们不在同一类型层次结构中,或者没有有效的一对一外键关系,它们之间具有匹配的主键。”< / p>
这是我的实施
public class Game
{
[Key]
[ForeignKey("GameDetails")]
public int GameId { get; set; }
public string GameName { get; set; }
//Navigation prop
public virtual Details GameDetails { get; set; }
public virtual ICollection<Details> DetailsId { get; set; }
}
public class Details
{
[Key]
public int DetailsId { get; set; }
public int GameId { get; set; }
public int RatingId { get; set; }
public int Grade { get; set; }
//Navigation prop
[ForeignKey("DetailsId")]
public virtual Game GameDetails { get; set; }
public virtual RatingCompany RatingCompany { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Game>().HasKey(f => f.GameId);
modelBuilder.Entity<Game>()
.Map(m =>
{
m.Properties(b => new {b.GameId});
m.ToTable("Details");
});
}
如何以1-1关系正确绑定它?
答案 0 :(得分:0)
您不应使用Map
来配置一对一的关系。请改用Fluent API的关系方法。
查看http://msdn.microsoft.com/en-us/data/jj591620.aspx#RequiredToRequired。
答案 1 :(得分:0)
如果覆盖OnModelCreating,则不应具有属性属性。
答案 2 :(得分:0)
好的,您也可以使用数据注释属性来执行此操作:
代码如下所示:
public class Game
{
[Key]
public int GameId { get; set; }
public string GameName { get; set; }
//Navigation prop
public virtual Details GameDetails { get; set; }
}
public class Details
{
[Key]
[ForeignKey("Game")]
public int GameId { get; set; }
public int RatingId { get; set; }
public int Grade { get; set; }
//Navigation prop
public virtual Game Game{ get; set; }
public virtual RatingCompany RatingCompany { get; set; }
}