【发布时间】:2017-12-02 07:09:09
【问题描述】:
我正在使用 Entity Framework 6 Code First 将大型 POCO 模型存储在数据库中。该模型恰好有 1000 多个属性(不要问 lol**),这意味着它必须拆分为多个 SQL 表(列限制为 1024)。我知道这通常是通过像这样指定各个列来完成的:
modelBuilder.Entity<HugeEntity>.Map(m =>
{
m.Properties(e => new { e.Prop1, e.Prop2 });
m.ToTable("HugeEntity1");
}.Map(m =>
{
m.Properties(e => new { e.Prop3, e.Prop4 });
m.ToTable("HugeEntity2");
};
我想知道是否有任何方法可以做到这一点而不必单独指定属性。理想情况下,它可以根据给定的列限制(即 1000)自动划分实体。
即使没有标准方法,最简单的破解方法是什么?模型上的属性可能会发生变化,所以我真的很想避免在不止一个地方详尽地列出它们。
任何建议表示赞赏!
**CONTEXT:这是一个域模型,代表用户输入的数据,应该在某个网页上捕获。它也在 WebAPI 中公开。我的团队考虑了一种键/值对方法,但认为这会使未来的 BI 应用程序更难使用这些数据,这些应用程序会访问 WebAPI。
【问题讨论】:
-
Reflection 被认为是一种可能的 hack。循环遍历属性并将它们平均分配到表中。我不知道是否有“正确”的方法来做到这一点。
-
我将成为那个人并“问”。
-
如果可以,您可能需要查看文档存储数据库(以 mongoDB 为例)。当每个对象都可以有一个独立的模式时,它们就很有效。
-
我会说任何具有 1000 个属性的对象肯定不是 POCO。它是某种需要重构的疯狂对象。使用它会很痛苦。 Intellisense 在尝试将属性加载到缓存时必须死掉。
-
尽情享受你即将创造的地狱
标签: c# sql-server entity-framework entity-framework-6