如何使用EF Core和ASP.NET Core实现实体属性值模型(EAV)?

问题描述 投票:0回答:1

假设我有一个实体USER,并在应用程序开发期间添加了一些修复属性。然后,在应用程序部署后,如果某些用户想要在应用程序登录后根据他们的要求添加更多基于文本字段,电子邮件,整数,下拉列表,多行文本等的自定义字段。如何使应用程序能够使用户可以自定义表单,并使用ASP.NET CORE在表单上添加其他数据类型的额外自定义字段?

例如,在应用程序开发过程中,我在UserProfileForm上添加了两个字段,或者User为所有用户提供了两个预先构建的自定义字段。

  • 名字:字符串
  • 姓:字符串

然后我如何制作应用程序,以便其他用户可以自定义UserProfileForm,以便他们可以在部署应用程序后在该表单上添加不同数据类型的自定义字段?

  • DateOfBirth:DateTime
  • 生物:文本(多行)
  • 专业:下拉菜单
asp.net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-webapi
1个回答
0
投票

您的问题中不清楚的是如何定义其他属性。但是,假设您有一些管理模块,或者只是一个允许添加随机键值属性的表单。显然,如果您将自定义字段定义为下拉列表,则需要进行一些管理设计,以将您的字段与下拉列表值相关联。因此,我认为您已经处理了所有这一切。

最简单的方法是在ApplicationUser中拥有一个字段(该字段的典型名称是从IdentityUser派生的类),该字段具有JSON字符串,并且单个对象包含所有这些动态值。

public  class AppUser : IdentityUser
{
    public string ExtraFields { get; set; }
}

那样,ApplicationUser模型的设计是固定,但是您仍然可以动态存储和处理额外字段。如果您的类具有这些动态值,则可以使用JsonSerializer.Serialize(),否则可能需要“手动”构建JSON对象。

© www.soinside.com 2019 - 2024. All rights reserved.