使用SQL Server的代码优先实体框架的自定义属性的EAV或JSON列

时间:2018-08-13 20:45:35

标签: indexing entity-framework-6 ef-code-first entity-attribute-value ef-code-first-mapping

我已经编写了一个应用程序,它是SAAS产品,其中所有用户都使用相同的代码库和数据库结构。我需要允许用户添加自己的自定义字段的功能,并且可能需要针对这些自定义字段运行查询。

我正在尝试找出最好的解决方案,该解决方案将允许我先在代码中自动向自定义字段添加索引,以提高查询性能。

我正在使用代码优先实体框架来创建数据库,我正计划有一个单独的表,该表将存储用户所需的自定义字段的详细信息,例如自定义字段的名称和类型(即Name =“ CustomAttribute1“,Type =” Date“),到目前为止,我倾向于针对一个对象使用JSON列来存储用户为该对象设置的自定义值,但是我正在努力寻找如何为该对象自动创建索引的方法每个自定义值。

我已阅读以下文章(https://www.codeproject.com/Articles/1166099/Entity-Framework-Storing-complex-properties-as-JSO),其中显示了使用以下代码在JSON列上创建索引的示例:

-- Add indexing on Name property in JSON column:
ALTER TABLE Blogs
       ADD OwnerName AS JSON_VALUE(Owner, '$.Name');

CREATE INDEX ix_OwnerName
       ON Blogs(OwnerName);

我想也许我可以遍历用户定义的自定义属性表,然后使用JSON列为每个属性创建索引,但是我想知道是否有一种方法可以使用实体框架代码首先可能使用“ modelBuilder”(可以在How to create index in Entity Framework 6.2 with code first上找到使用modelBuilder在EntityFramework 6.2中的标准列上创建索引的示例)。

任何人都可以为我指出实现该目标的正确方向,或者可能为我的问题提供更好的解决方案吗?

0 个答案:

没有答案