![](/img/trans.png)
[英]EF Core migration error: PositionalParameterNotFound,Add-Migration
[英]Add-Migration error with EF Core Owned type
我有两个从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
编辑:
微软已经确认这是一个错误。
同时,您可以使用 fluent 方法进行配置。
[Owned]
属性通过覆盖ApplicationDbContext
上的OnModelCreating
方法来配置关系
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<ApplicationUser>(b => { b.OwnsOne(e => e.Name); b.OwnsOne(e => e.ValidationToken); }); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.