【问题标题】:How to implement Entity atribute value model (EAV) using EF Core and ASP.NET Core?如何使用 EF Core 和 ASP.NET Core 实现实体属性值模型(EAV)?
【发布时间】:2020-04-16 00:12:35
【问题描述】:

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

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

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

那我怎样才能让应用程序让其他用户可以自定义UserProfileForm,以便他们可以在应用程序部署后在该表单上添加不同数据类型的自定义字段?

  • 出生日期:日期时间
  • 简历:文本(多行)
  • 专业:下拉

【问题讨论】:

  • 查看customizing identity modelthis answer 的文档也可以为您提供帮助
  • @LazZiya 我想从正在运行的应用程序中添加一个额外的自定义字段,而不是在开发阶段。
  • 如果您希望用户动态创建属性并为实体分配值,您可以查看entity-attribute-value 模型。这种架构允许您的应用程序在运行时进行自定义。

标签: asp.net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-webapi


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多