У меня есть два класса, например, так:
[Table("GameLevels", Schema = "ref")]
public class GameLevel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public double PointsMin { get; set; }
public double PointsMax { get; set; }
}
[Table("GameProfiles", Schema = "usr")]
public class UserGameProfile
{
[Key]
[ForeignKey("ApplicationUser")]
public string Id { get; set; }
public int GamesPlayed { get; set; }
public double Points { get; set; }
public int WinCount { get; set; }
public int LossCount { get; set; }
public int DrawCount { get; set; }
public int ForfeitCount { get; set; }
public int GameLevelId { get; set; }
public virtual GameLevel Level { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
Платформа сущностей строит это так, что у UserGameProfile
есть внешний ключ, указывающий на GameLevel
.Я думаю, это из-за свойства GameLevelId
.
Можно ли как-нибудь получить это, чтобы сгенерировать таблицы и свойство навигации без внешнего ключа?
Я попытался:
modelBuilder.Entity<UserGameProfile>().HasOptional<GameLevel>(x => x.Level).WithMany();
Но тогда не удается построить базу данных,С этой ошибкой:
Обнаружена одна или несколько ошибок проверки при создании модели:
Project.Domain.Data.UserGameProfile_Level:: множественность конфликтует с ссылочным ограничением в роли "UserGameProfile_Level_Target"в отношениях 'UserGameProfile_Level'.Поскольку все свойства в зависимой роли не могут быть равны нулю, кратность основной роли должна быть равна 1.
В основном я хочу, чтобы от нуля или единицы до нуля илимного отношений.
Как сохранить уровни независимыми, но при этом иметь возможность добавить уровень в профиль?