Я учу ASP.NET Core
с Entity Framework
и пытаюсь добавить FK
в мою таблицу UserDetails
. Это модель:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual UserDetails UserDetail { get; set; }
}
public class UserDetails
{
public string UserId { get; set; }
public string Biography { get; set; }
public string Country { get; set; }
public Uri FacebookLink { get; set; }
public Uri TwitterLink { get; set; }
public Uri SkypeLink { get; set; }
public virtual User UserKey { get; set; }
}
Таблица User
- это таблица Master
, которая содержит всех зарегистрированных пользователей в моем приложении (я использую AspNetCore.Identity).
Фактически я хочу добавить в качестве FK
свойство UserId
, которое должно ограничивать Id
из User
. Поэтому внутри класса ApplicationContext
я сделал следующее:
public class DemoAppContext : IdentityDbContext<ApplicationUser>
{
public DemoAppContext(DbContextOptions<DemoAppContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<UserDetails>(entity =>
{
entity.Property(e => e.Biography).HasMaxLength(150);
entity.Property(e => e.Country).HasMaxLength(10);
entity.HasOne(d => d.UserKey)
.WithOne(p => p.UserDetail)
.HasForeignKey(d => d.???; <- problem here
});
}
public DbSet<User> Users { get; set; }
public DbSet<UserDetails> UserDetails { get; set; }
}
Я переопределил OnModelCreating
и с помощью ModelBuilder
я определил для UserDetails
таблицы MaxLength
некоторых свойств. В последней строке builder.Entity<UserDetails>
я попытался присвоить FK
, создавая связь с HasOne => UserKey
, которая содержит объект User
. Это соотношение 1 to 1
, поэтому я использовал WithOne
и присвоил UserDetail
, который содержит объект UserDetails
.
В конце я использовал HasForeignKey
, но когда я набираю d.
, компилятор не показывает никаких свойств.
Что я сделал не так? Может быть, я слишком усложнил вещи?
Извините за любые ошибки, и заранее спасибо за любые объяснения.