У меня есть два класса, которые ссылаются друг на друга в подходе к платформе Entity Framework.Перемещение отношений между множеством ко многим EF, похоже, не создает правильный план миграции.
public class Owner : IAuditBase
{
[Key]
public int Id { get; set; }
public string ShortCode { get; set; }
public string Name { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedDate { get; set; }
public string UpdatedBy { get; set; }
public DateTime? UpdatedDate { get; set; }
public List<CertificateType> CertificateTypes { get; set; }
public List<User> OwnerUsers { get; set; }
}
public class User
{
[Key]
public string Email { get; set; }
public string ChipId { get; set; }
public string Alias { get; set; }
public Guid ResetCodeId { get; set; }
public string ResetCode { get; set; }
public Owner CurrentOwner { get; set; }
public List<Owner> UserOwners { get; set; }
}
После добавления двух списков (OwnerUsers и UserOwners), я бы ожидать, рамки сущности, чтобы добавить новую таблицу, соединяя идентификаторы владельца и пользователя, что это не так.
public partial class addownerstousers : DbMigration
{
public override void Up()
{
AddColumn("dbo.Owners", "User_Email", c => c.String(maxLength: 128));
AddColumn("dbo.Users", "Owner_Id", c => c.Int());
CreateIndex("dbo.Owners", "User_Email");
CreateIndex("dbo.Users", "Owner_Id");
AddForeignKey("dbo.Owners", "User_Email", "dbo.Users", "Email");
AddForeignKey("dbo.Users", "Owner_Id", "dbo.Owners", "Id");
}
public override void Down()
{
DropForeignKey("dbo.Users", "Owner_Id", "dbo.Owners");
DropForeignKey("dbo.Owners", "User_Email", "dbo.Users");
DropIndex("dbo.Users", new[] { "Owner_Id" });
DropIndex("dbo.Owners", new[] { "User_Email" });
DropColumn("dbo.Users", "Owner_Id");
DropColumn("dbo.Owners", "User_Email");
}
}
Он добавляет только один внешний ключ к каждому столу, в значительной степени создавая двусторонние отношения «один ко многим». Я видел, как мигратор работал над этим раньше, поэтому я просто не могу обмотать голову, почему это происходит сейчас. Любая помощь высоко ценится.
Попробуйте добавить свободно отображение ('HasMany-WithMany'). –
Это работает! Благодаря! Хотя он чувствует себя немного взломанным, я видел, как это работает, не имея необходимости определять такие вещи раньше? Также не стесняйтесь добавлять свой комментарий в качестве ответа – thsorens