Я новичок в платформе Entity Framework и первой миграции кода, поэтому надеюсь, что это простой вопрос для ответа. Я пытаюсь создать отношения один к одному между ApplicationUser (из идентификатора ASP.NET) и членом. У меня есть класс Статус:Экстренный внешний ключ в коде Первые миграции
public class Member
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual Address Address { get; set; }
public UserStatus Status { get; set; }
public DateTime CreateDate { get; set; }
public virtual string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
и ApplicationUserClass:
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
}
public virtual Member Member { get; set; }
}
В моей DbContext (наследует IdentityDbContext) У меня есть следующая конфигурация:
modelBuilder.Entity<ApplicationUser>()
.HasOptional(t => t.Member).WithOptionalPrincipal();
base.OnModelCreating(modelBuilder);
Когда я запускаю код первого миграция, я получаю это:
CreateTable(
"dbo.Members",
c => new
{
ID = c.Int(nullable: false, identity: true),
FirstName = c.String(),
LastName = c.String(),
Status = c.Int(nullable: false),
CreateDate = c.DateTime(nullable: false),
ApplicationUserID = c.String(maxLength: 128),
Address_ID = c.Int(),
ApplicationUser_Id = c.String(maxLength: 128),
})
.PrimaryKey(t => t.ID)
.ForeignKey("dbo.Addresses", t => t.Address_ID)
.ForeignKey("dbo.AspNetUsers", t => t.ApplicationUser_Id)
.ForeignKey("dbo.AspNetUsers", t => t.ApplicationUserID)
.Index(t => t.ApplicationUserID)
.Index(t => t.Address_ID)
.Index(t => t.ApplicationUser_Id);
Обратите внимание, что у меня есть 2 внешних ключа, ApplicationUserID и ApplicationUser_Id. Я хочу попытаться сделать все, используя FluentAPI (т. Е. Не аннотации данных). Как мне настроить его так, чтобы EF использовал ApplicationUserID, идентификатор строки, который у меня есть в моем классе? Я думал, что Class + ID - это соглашение, так почему он создает другой внешний ключ?
Можете ли вы добавить код конфигурации modelBuilder для вашего класса Member на свой вопрос? –
У меня нет – Eitan