У меня есть два "собственных" типа, на которые ссылается ApplicationUser
(который наследуется от IdentityUser
):
using System;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
namespace OwnedEntityTest.Data
{
public class ApplicationUser : IdentityUser
{
public PersonalName Name { get; set; }
public ValidationToken ValidationToken { get; set; }
}
[Owned]
public class PersonalName
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
[Owned]
public class ValidationToken
{
public int ValidationCode { get; set; }
public DateTime ExperiationDateUTC { get; set; }
}
}
Когда я добавляю новую миграцию, скаффолдер жалуется:
Невозможно использовать таблицу «IdentityUser» для типа сущности «ValidationToken», поскольку она используется для типа сущности «PersonalName» и между их первичными ключами нет взаимосвязи.
Это просто ошибка или я делаю что-то не так (или не понимаю что-то о собственных типах)?
Да, вы можете воссоздать эту проблему:
- Создание нового проекта из
ASP.NET Core Web Application
шаблона проекта
- Выбрать
Web Application
- Нажмите
Change Authentication
и выберите Individual user accounts
- В консоли диспетчера пакетов введите
update-database
, чтобы обновить снимок модели.
- Добавьте приведенный выше код к проекту
- В
ApplicationDbContext
добавить ссылку на ApplicationUsers:
public DbSet<ApplicationUser> ApplicationUsers { get; set; }
- Добавить новую миграцию в Консоль диспетчера пакетов:
add-migration m_001
- Та да ... вы должны увидеть сообщение об ошибке
EDIT:
Microsoft подтвердила, что это ошибка .