я работаю над устаревшим кодом, добавлю новую таблицу в БД
и он будет иметь два отношения «один к нулю» или «один», и мне нужно «по какой-то причине» ForeignKeys в новой таблице, которые будут определены как свойства и код:
public class EconomyInfo : Entity
{
/*other props*/
[ForeignKey("LogoImage")]
[Required]
public int LogoImage_Id { get; set; }
public virtual Image LogoImage { get; set; }
[ForeignKey("Organization")]
[Required]
public int Organization_Id { get; set; }
public virtual Organization Organization { get; set; }
}
public class Image : Entity
{
/*other props*/
public virtual EconomyInfo Economyinfo { get; set; }
}
public class Organization : Entity
{
/*other props*/
public virtual EconomyInfo EconomyInfo { get; set; }
}
public class Entity
{
public int Id { get; set; }
}
Like This EF не генерирует миграцию и выдает ошибку
EconomyInfo_LogoImage_Source:: множественность недопустима в роли EconomyInfo_LogoImage_Source во взаимосвязи EconomyInfo_LogoImage. Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть «*».
и то же самое для другого свойства навигации
и если я добавлю их в строки в классе контекста:
modelBuilder.Entity<Organization>().HasOptional(o => o.EconomyInfo).WithOptionalPrincipal();
modelBuilder.Entity<Image>().HasOptional(i => i.Economyinfo).WithOptionalPrincipal();
миграция будет сгенерирована без ошибок, но это будет странно, как:
public override void Up()
{
CreateTable(
"dbo.EconomyInfoes",
c => new
{
Id = c.Int(nullable: false, identity: true),
LogoImage_Id = c.Int(nullable: false),
Organization_Id = c.Int(nullable: false),
Image_Id = c.Int(),
Organization_Id1 = c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Images", t => t.LogoImage_Id, cascadeDelete: true)
.ForeignKey("dbo.Organizations", t => t.Organization_Id)
.ForeignKey("dbo.Images", t => t.Image_Id)
.ForeignKey("dbo.Organizations", t => t.Organization_Id1)
.Index(t => t.LogoImage_Id)
.Index(t => t.Organization_Id)
.Index(t => t.Image_Id)
.Index(t => t.Organization_Id1);
}
Я знаю, что мог бы отредактировать сгенерированный код миграции EF, чтобы он указывал мои потребности, но нет смысла тратить часы на работу с EF, а затем сдаться и обойти его, плюс это не будет так практично поработайте с ним позже мои коллеги, заранее спасибо