Не работает связь 1 к 1 Entity Framework
Сделал бд с 2 таблицами User и Profile. Они должны быть связаны 1 к 1, но почему-то поле Profile в таблице User всегда null. И наоборот у таблицы Profile поле User всегда null. Вот код:
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public virtual UserProfile Profile { get; set; }
}
public class UserProfile
{
public int Id { get; set; }
public string Name { get; set; } = "Unknown";
public int Age { get; set; } = 0;
[ForeignKey("User")]
public int UserId { get; set; }
public virtual User User { get; set; }
}
public class UserContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<UserProfile> Profiles { get; set; }
public UserContext(DbContextOptions<UserContext> options)
: base(options)
{
Database.EnsureCreated();
}
}
Controller:
User user1 = new User { UserName = model.UserName, Password = model.Password };
db.Users.Add(user1);
db.Profiles.Add(new UserProfile { User = user1});
db.SaveChanges();
Пытаюсь вытащить данные вот так:
User user = db.Users.FirstOrDefault(p => p.UserName == username);
if (user != null)
{
if (User.Identity.Name == user.UserName)
{
return View("MyProfile", user.Profile);
}
return View("Profile", user.Profile);
}
return View("Profile");
Если посмотреть данные то все заполняется правильно, как я понял. Вот скрин:
SQL Код таблицы Profile:
CREATE TABLE [dbo].[Profiles] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (MAX) NULL,
[Age] INT NOT NULL,
[UserId] INT NOT NULL,
CONSTRAINT [PK_Profiles] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Profiles_Users_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[Users] ([Id]) ON DELETE CASCADE
);
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Profiles_UserId]
ON [dbo].[Profiles]([UserId] ASC);
