加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如果EAV是邪恶的,动态值使用什么?

发布时间:2020-12-15 03:59:24 所属栏目:百科 来源:网络整理
导读:我需要创建数据库,其中Accountgroup表将具有动态字段,以便Accounts可以在需要时输入这些动态字段值.这可能不重要,但我正在使用EF和 Linq的C#. 对我来说很难,因为我从来没有做过这样的事情,而且自从我做研究以来,每个人都在说EAV系统是可怕的,你应该设计不同,
我需要创建数据库,其中Accountgroup表将具有动态字段,以便Accounts可以在需要时输入这些动态字段值.这可能不重要,但我正在使用EF和 Linq的C#.

对我来说很难,因为我从来没有做过这样的事情,而且自从我做研究以来,每个人都在说EAV系统是可怕的,你应该设计不同,问题是没有人会告诉他们 – 怎么样?

所以也许你可以帮助我,告诉我如何在不做EAV的情况下实现类似的事情?

这是我到目前为止.

解决方法

经验法则的问题在于,他们很快就从“通过X做错”到“永不做X”.

EAV通常是一个坏主意,因为在许多方面,它会破坏关系模式的目的,从而消除了关系型数据库管理系统的许多特性和优点,以及建立在RDBMS上的其他技术,如像实体框架这样的ORM.

然而,RDBMS不是很适合的一些设计问题.有一些这样的坏配合,必须发明一种全新的技术(例如NoSQL DB,如MongoDB).

有时EAV可能是您从一组不完美的选择中留下的最佳选择.如果您不能(不能)知道您的模式是否在手,那么EAV可能是您的最佳选择.如果您的模式变得不重要,这一点尤其如此.考虑一个在线产品目录,其中有一个巨大的产品列表,每个产品都有一些功能.您无法预先预测哪些产品将具有哪些功能.最后,您只能使用产品功能将其转储到“feature:value”列表中.这是一种模式不是特别强大的情况,所以用EAV打败它并不是特别有害的.

最重要的是了解您的设计选择将对您的能力和运营做些什么.所有的设计是权衡的.关键是要有意识地取舍.而不是“EAV是邪恶的”,而是考虑:“EAV是一个加载的枪,确保你知道你指向的脚.”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读