带有EF和代码优先的.NET Core自定义用户属性

时间:2019-08-20 12:11:59

标签: c# sql-server entity-framework core

我创建了一个测试项目,在其中使用.NET Core 2.2和Identity Framework 2.0。

我已经成功创建了一个项目并调整了一些字段,以便我理解如何将数据从ViewControllerStores进行解析。

我一直在考虑自定义数据库,以便用户还将包含ReferralID来测试一些东西,这个ReferralID是整数。

我要做的是使用此自定义属性扩展了IdentityUser并为每个Identity Option创建了一个自定义版本。

    public class ApplicationUsers : IdentityUser
    {
        public int? ReferralID { get; set; } = null;       
    }

我也将它添加到已生成的表中的数据库中,但是现在应用程序抛出错误:

  

CLR属性'ReferralID'无法添加到实体类型'IdentityUser',因为它是在CLR类型'ApplicationUsers'上声明的

不幸的是,我无法找到/理解问题所在,似乎在ModelBuilder中出了点问题,我还没有接触过模型构建器,而是使用脚手架Scaffold-DbContext "Data Source=(localdb)\mssqllocaldb;Initial Catalog=CoreTest;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -Context GolfScoresContext -OutputDir Models -DataAnnotations -Project WebApi -Force自动生成的。

我错过了哪一步?还是不能将自定义属性添加到IdentityUser?我见过有人为此而苦苦挣扎,并在[NotMapped]上加上了ApplicationUsers,但我认为我的财产不会被保存。

1 个答案:

答案 0 :(得分:0)

我最终发现抛出它的原因应该是HasKey,并且它不接受扩展模型。 (使用:Entity Framework Core Using multiple DbContexts) 我最终重新生成了对其进行修复的模型,我认为OnModelCreating发生了一些问题,如此处https://github.com/aspnet/EntityFrameworkCore/issues/9133

所示