【发布时间】:2022-01-01 09:34:40
【问题描述】:
我有这个数据库结构
public class Gameboard
{
public string Id { get; set; }
public int Round { get; set; }
public int MaxTries { get; set; }
public ICollection<ColorGameBoard> Colors { get; set; }
public ICollection<ColorGameBoard> CorrectColors { get; set; }
}
public class Color
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<ColorGameBoard> ColorGameBoards { get; set; }
}
public class ColorGameBoard
{
public int Id { get; set; }
public int GameBoardId { get; set;}
public Gameboard Gameboard { get; set; }
public int CorrectColorId { get; set; }
public Color CorrectColors { get; set; }
public int ColorId { get; set; }
public Color Color { get; set; }
}
这就是我创建关系的方式:
modelBuilder.Entity<ColorGameBoard>()
.HasOne(x => x.Gameboard)
.WithMany(x => x.CorrectColors)
.HasForeignKey(x => x.CorrectColorId);
modelBuilder.Entity<ColorGameBoard>()
.HasOne(x => x.Gameboard)
.WithMany(x => x.Colors)
.HasForeignKey(x => x.ColorId);
modelBuilder.Entity<ColorGameBoard>()
.HasOne(x => x.Color)
.WithMany(x => x.ColorGameBoards)
.HasForeignKey(x => x.GameBoardId);
我收到此错误:
无法在“Gameboard.Colors”和“ColorGameBoard.Gameboard”之间创建关系,因为“Gameboard.CorrectColors”和“ColorGameBoard.Gameboard”之间已经存在关系。导航属性只能参与单个关系。如果您想在“OnModelCreating”中首先在导航“ColorGameBoard.Gameboard”上覆盖现有关系调用“Ignore”。
数据库结构:在 Gameboard 上有两个带颜色的列表。每个列表应包含至少 5 种颜色。并且数据库中的每种颜色都可以在多个游戏板上使用。此外,一种颜色可以在游戏板上多次使用。
有人知道如何解决这个错误吗?
【问题讨论】:
-
您需要两个联结类,
ColorGameBoard和CorrectColorGameBoard。
标签: c# asp.net asp.net-core entity-framework-core ef-core-2.0