c# - Entity Framework 以编程方式将模型拆分为多个表

标签 c# sql-server entity-framework entity-framework-6

我正在使用 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 中公开。我的团队考虑过键/值对方法,但认为这会使数据更难被 future 使用 WebAPI 的 BI 应用程序使用。

最佳答案

你对我们说“不要问”。但你最大的问题是你在对自己说。如果您的模型的字段数超过 50 个,那么您需要询问发生了什么。我想知道是否值得深呼吸并重新审视计算中的一些更抽象的概念。我将从 Database Normalization 开始. 1K 动态属性告诉我你迫切需要这个。

顺便说一句,“数据库规范化”概念本身并不特定于 SQL 数据库。您应该尽可能地规范化您的 POCO 模型。诚然,在 OO 语言中有一些非关系概念。但是没有理由为您所描述的极端情况找借口。

另一个范例可能是 Domain Driven Design .我自己对此不太熟悉,所以这就是为什么我不说你应该从那里开始。但从一开始我就开始实现它,我会说学习曲线是值得的。

我应该小心不要居高临下。我自己并没有完全拥有最高范式的所有表格。但我会告诉你,在我不注意的区域,头痛会更强烈。

关于c# - Entity Framework 以编程方式将模型拆分为多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44810616/

相关文章:

c# - Visual Studio 2012 不允许我调试接口(interface)的实现

c# - Linq 选择 : Set specific value for first occurrence only

mysql - 将复杂的 SQL 转换为 JOIN

c# - 分页大型数据集 - SQL Server(最佳实践)

c# - 如何模拟代码优先策略创建的 Entity Framework 数据库?

c# - Entity Framework 有mysql,实体没有PK

c# - 什么是 Java 等同于 C# 的 Windows 窗体,用于轻松快速地构建 GUI 应用程序

sql - 需要一些有关 SQL 查询的帮助

.net - Entity Framework 4.1:如何按对象ID删除

c# - 使用 MongoDatabase 类而不是 MongoDatabaseImpl