Я знаю, что эта тема обсуждается очень подробно, но, похоже, ничего из этого не помогло, так как у меня все еще возникают проблемы с "Невозможно определить основной конец ассоциации между типами" SupportSite.Core.User "и" SupportSite.Core.User '. Основной конец этой ассоциации должен быть явно настроен с использованием либо API-интерфейса, обеспечивающего свободное взаимодействие, либо аннотаций данных. "
Единственное, что заставляет его работать, - это если я добавляю аннотацию NotMapped на пользователя properties.
Существует BaseItemEntity:
public class BaseItemEntity
{
[Key, Column(Order = 0)]
public Guid ID { get; set; }
public DateTimeOffset CreatedDate { get; set; }
public DateTimeOffset ModifiedDate { get; set; }
[ForeignKey("CreatedUser")]
public Guid? CreatedUserID { get; set; }
public virtual User CreatedUser { get; set; }
[ForeignKey("ModifiedUser")]
public Guid? ModifiedUserID { get; set; }
public virtual User ModifiedUser { get; set; }
}
public class User : BaseItemEntity // Inherits the above class
{
private UserPermissions _permissions;
public UserPermissions Permissions
{
get => _permissions;
set => _permissions = value;
}
public Company Company { get; set; } // 'Company' inherits BaseItemEntity as well.
}
Как в этом примере: Двойная собственная ссылка в Entity Framework , но, похоже, это не работает.
Попытка сделать пример здесь: Как иметь две самоссылки в классе сущности , и это не работает.
Я надеюсь, что смогу достичь чего-то, что могло бы перейти на что-то вроде того, когда я запускаю: PM> EntityFramework6\Add-Migration Initial
public partial class Initial : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Users",
c => new
{
ID = c.Guid(nullable: false),
Permissions = c.Int(nullable: false),
CreatedDate = c.DateTimeOffset(nullable: false, precision: 7),
ModifiedDate = c.DateTimeOffset(nullable: false, precision: 7),
CreatedUserID = c.Guid(),
ModifiedUserID = c.Guid(),
Company_ID = c.Guid(),
})
.PrimaryKey(t => t.ID)
.ForeignKey("dbo.Companies", t => t.Company_ID)
.ForeignKey("dbo.Users", t => t.CreatedUserID)
.ForeignKey("dbo.Users", t => t.ModifiedUserID)
.Index(t => t.Company_ID);
CreateTable(
"dbo.Companies",
c => new
{
ID = c.Guid(nullable: false),
CreatedDate = c.DateTimeOffset(nullable: false, precision: 7),
ModifiedDate = c.DateTimeOffset(nullable: false, precision: 7),
CreatedUserID = c.Guid(),
ModifiedUserID = c.Guid(),
})
.PrimaryKey(t => t.ID)
.ForeignKey("dbo.Users", t => t.CreatedUserID)
.ForeignKey("dbo.Users", t => t.ModifiedUserID);
CreateTable(
"dbo.Projects",
c => new
{
ID = c.Guid(nullable: false),
CreatedDate = c.DateTimeOffset(nullable: false, precision: 7),
ModifiedDate = c.DateTimeOffset(nullable: false, precision: 7),
CreatedUserID = c.Guid(),
ModifiedUserID = c.Guid(),
Company_ID = c.Guid(),
})
.PrimaryKey(t => t.ID)
.ForeignKey("dbo.Companies", t => t.Company_ID)
.ForeignKey("dbo.Users", t => t.CreatedUserID)
.ForeignKey("dbo.Users", t => t.ModifiedUserID)
.Index(t => t.Company_ID);
CreateTable(
"dbo.ProjectItems",
c => new
{
ID = c.Guid(nullable: false),
CreatedDate = c.DateTimeOffset(nullable: false, precision: 7),
ModifiedDate = c.DateTimeOffset(nullable: false, precision: 7),
CreatedUserID = c.Guid(),
ModifiedUserID = c.Guid(),
Project_ID = c.Guid(),
})
.PrimaryKey(t => t.ID)
.ForeignKey("dbo.Projects", t => t.Project_ID)
.ForeignKey("dbo.Users", t => t.CreatedUserID)
.ForeignKey("dbo.Users", t => t.ModifiedUserID)
.Index(t => t.Project_ID);
}
public override void Down()
{
DropForeignKey("dbo.Users", "Company_ID", "dbo.Companies");
DropForeignKey("dbo.ProjectItems", "Project_ID", "dbo.Projects");
DropForeignKey("dbo.Projects", "Company_ID", "dbo.Companies");
DropIndex("dbo.ProjectItems", new[] { "Project_ID" });
DropIndex("dbo.Projects", new[] { "Company_ID" });
DropIndex("dbo.Users", new[] { "Company_ID" });
DropTable("dbo.ProjectItems");
DropTable("dbo.Projects");
DropTable("dbo.Companies");
DropTable("dbo.Users");
}
}
Как этого добиться без использования [NotMapped]
аннотации к свойствам пользователя в BaseItemEn tity?
Спасибо всем, кто может помочь.
Если кому-то нужна ясность, дайте мне знать!