问题标签 [table-splitting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
463 浏览

entity-framework - 实体框架表拆分 - 如何初始化延迟加载的属性?

使用 Entity Framework 6.0,我正在尝试实现表拆分以提高对包含 BLOB 数据的列的表的查询性能。我已遵循本教程中的建议,并且确实按照描述的方式工作。

这是映射到我的一个拆分表的实体类的一个非常简化的示例...

...以及相关实现中的相应配置代码DbContext...

鉴于延迟加载Content属性是Required由实体框架提供的,在包含类的构造函数中将其初始化为默认值似乎是明智的MyEntity......

...这使得可以创建并部分填充类的新实例,而不会因忘记初始化所需的属性值而引发异常:

我通常使用类似的技术来初始化 EF 实体上的集合属性,并且效果很好。但是,在上面的场景中,构造函数中的这种初始化有一个意想不到的效果:当从数据库中检索现有实体实例时,延迟加载属性中的数据库值被忽略,取而代之的是空的默认值。

这对我来说似乎不合逻辑。实体框架不是通过首先调用其默认构造函数然后将自己的属性值应用于创建的实例来创建实体对象吗?如果是这样,这应该根据数据库数据Content用 的新实例覆盖我的默认属性值。MyEntityContent这就是它似乎与延迟加载的集合属性一起工作的方式。

如果无法按照我期望的方式执行此操作,是否有替代技术来初始化延迟加载的属性?

0 投票
2 回答
2638 浏览

c# - EF6 表拆分与多个拆分的共享主键

我正在将旧数据库系统升级到 .NET + Entity Framework 6(代码优先 POCO)+ PostgreSQL。为了便于编程,我希望将一个大表(200 多个字段)拆分为多个实体,例如:

我很高兴发现 EF6 支持“表拆分”:将单个表映射到多个实体以拆分字段。

然而,尝试实现这一点,并在线阅读许多页面,确认多次拆分时这是有问题的。实体框架不仅需要主实体的导航属性,还需要映射到表的所有实体之间的导航属性。对于我上面的场景,这将需要 21 个无意义的导航属性 - 如果我费心将它们设为双向,则需要 42 个。

请参阅:http ://social.msdn.microsoft.com/Forums/en-US/0f65caae-8a66-431f-aa02-4b2c68f871e9/ef-41-rc-code-first-split-one-table-into-multiple-实体?论坛=adodotnetentityframework

请参阅:如何使用 EF-Code-First 将大表分成多个离散类型

建议使用具有共享主键的多个表,这对我来说是一种选择。但是,考虑到 EF 臃肿的 SQL 查询生成,以及 PostgreSQL 有时带有复杂查询的杂乱无章的查询优化器,我担心这个选项(100GB+ 数据库)的性能。

总结一下:

表拆分

优点:最好的查询性能,在数据库层实现最快

缺点:用废话污染我的模型和 OnModelBuilding() 方法,让其他开发人员感到困惑

跨多个表共享主键

优点:最简洁的模型和代码,非遗留数据库的推荐解决方案

缺点:实施额外的工作,可能会降低性能

我的问题:

1) EF6 是否通过 2+ 拆分改进了表拆分?

2) 有没有我没有考虑到的因素?

3)还有其他选择吗?

PS 我对使用 [ComplexType] 不感兴趣

0 投票
1 回答
1755 浏览

entity-framework - EF6 无法为表拆分/共享主键 + 基类构建模型?

问题

根据我之前的问题,我正在尝试使用表拆分来共享大约 7 个实体的大表(200 多个字段)。

EF6 不仅需要从主模型到子模型的导航属性,还需要所有子模型之间的导航属性(这很糟糕)。

手动解决方案

这可以手动完成:

使用流畅的映射:

这行得通。但这不会不适用于 7+ 模型。

尝试改进#1

我想通过继承+ DRY原则改进:

但是在第一次请求时失败,“序列包含多个匹配元素”:

尝试改进#2

我以为我可以将它们声明为抽象的,因此至少程序员被迫实现正确的成员(仍然很糟糕在每个派生类上重新声明):

但这失败时同样的错误。啊??类定义与工作副本相同,只是它们被声明为“覆盖”而不是“虚拟”。就好像 E/F 正在索引 PropertyInfos 或不考虑 PropertyInfo.ReflectedType 的东西

尝试改进#3

我可以使用接口强制执行该模式,但这不太可取,因为必须在每个类上声明接口,这开始看起来很奇怪:

嗯?

这是 E/F 中的一个错误,它很难将基类上的属性与派生类上的属性相同吗?

抱歉冗长的解释,这是今天上午整个调查的总结。

0 投票
1 回答
356 浏览

time - D3js 仅获取值的一部分并将其转换为十进制

我正在尝试获取以日期表示的值的十进制值。我的问题是我只需要日期中的时间,而不是实际日期本身。所以这里是我的 .json 数据的一部分:

所以基本上我想取“From”值并获得以十进制值返回的时间。我不认为使用Time Formatting将时间转换为十进制数,这只是对我来说似乎很难的值的拆分。你们中的任何人都知道如何实现这一目标吗?

谢谢,

卡斯

编辑:好的,我们开始吧。我做了一个JSFiddle来解决问题。因为我的日期中有一个 TIME (HH:MM),所以我的条形图中的矩形不会出现在 xAxis 中的特定日期。相反,它们在 xAxis 上的某一天和某个时间出现。

我只需要它是具体的日期,而不是日期和时间。

我想我必须在以下部分进行一些更改:

实在看不懂是什么...

0 投票
1 回答
32 浏览

r - data.frame 和拆分行...找不到适合我的数据的解决方案

我的桌子有点挣扎。我正在尝试拆分一些变量(使用 R),但我在使用一个特定列时遇到了困难。

我的数据集是这样的:

我想将所有组合在一起的区域分开。到目前为止,我已经解决了所有列,但“区域”之一:

我不知道如何解决修复该列:例如 '12..13': 12 应该放在 Ref=A 中,13 应该放在 Ref=T 中(分别是第一个和第二个字符)。事情变得复杂了,因为有些列有 3 个字符(对应的范围:22..24),有些列会有更多。

我该怎么解决?最近几天一直在寻找解决方案,但我仍然不知道如何解决。如果这已在其他地方解决,我深表歉意。PS:我知道为了在“区域”列上进行拆分,我需要使用:

作为分隔符。

0 投票
6 回答
20956 浏览

c# - 实体框架表拆分:不在同一类型层次结构中/没有有效的一对一外键关系

我正在使用 Entity Framework 6 和 Code-First 方法,我希望将两个实体放在同一个表中。我究竟做错了什么?

我得到的错误:实体类型'PictureInfo'和'Review'不能共享表'Review',因为它们不在同一类型层次结构中,或者它们之间没有有效的一对一外键关系和匹配的主键。

我究竟做错了什么?

0 投票
1 回答
8097 浏览

sql - 如何从 SQL Server 2012 中表的一个分区获取 COUNT(*)?

我的表有 700 万条记录,我根据 ID 将表拆分为 14 部分,每个分区包含 500 万条记录,分区大小为 40G。我想运行一个查询来获得一个分区的计数,但是它扫描所有分区并且查询的时间变得非常大。

如何只在一个分区上运行查询而不扫描其他分区?

0 投票
2 回答
73 浏览

mysql - MySQL中的表拆分

我有一个关于数据库表拆分的不寻常情况;我有一个名为“消息”的表,其中包含要通过电子邮件发送的消息的信息:

创建消息时,它的状态自动设置为draft,可以scheduled,最后,当发送给至少一个联系人时,它的状态是archived

我的老板建议应该将消息拆分为three tables命名

草稿,

预定和

存档。

实际上,几乎每次您message在 DB 中搜索 send 时(status is 'draft'),该表都会包含大量不需要的数据(状态为“已归档”的消息)。但是,如果我拆分表,每次更改消息的状态时,我都必须将其插入到相应的表中,并且delete从当前status表中插入。

由于我以前没有听说过这种做法,所以我征求意见。它对split表格有效吗?提前致谢

0 投票
1 回答
93 浏览

c# - 表拆分 - 是否可以将表拆分为两个完全独立的实体?

我有一个简单的用户表:

我想在 EF6 中将其拆分为两个实体。用户和用户密码。这些代表了两种截然不同的业务需求,但碰巧存在于同一张桌子上。

所以我创建了两个实体。

我有这样的地图

但是当我使用这些实体时,会出现以下错误:

Message = "实体类型 'UserPassword' 和 'User' 不能共享表 'User',因为它们不在同一类型层次结构中,或者它们之间没有有效的一对一外键关系和匹配的主键。"

我不想建立关系。我在按层次结构设置表时遇到问题。我不想要一个歧视者。我真的只想有两种不同的方式来谨慎地到达同一张桌子。除了创建两个上下文之外,还有其他方法吗?

0 投票
1 回答
358 浏览

rapidminer - 在 rapidminer 5 的新列中拆分值

在 rapidminer 5 中,我想拆分列的值并将新值放入新列中。IE:

BIC|"Cognome"|"Nome"|"Via_completa"|"Civico"|"Esponente"|"CAP"|"Frazione"|"Comune"|"Provincia" 50417273|"ACCROCIA"|"ALESSANDRO"|"VIA NAPOLI "|"66"||"00100"||"米兰"|"MI"

“Via_completa”列由值“VIA”和“NAPOLI”组成。为了根据我的数据集规范化地址,我想在“Via_completa”列中拆分值“VIA”和“NAPOLI”,创建一个名为“DUG”的新列,并将值“VIA”放在新列中。像这样:

BIC|"Cognome"|"Nome"|"DUG"|"Via_completa"|"Civico"|"Esponente"|"CAP"|"Frazione"|"Comune"|"Provincia" 50417273|"ACCROCIA"|"ALESSANDRO" |"VIA"|"那不勒斯"|"66"||"00100"||"米兰"|"MI"

在 Excel 中有一个“文本到列”功能。Rapid miner 中是否有操作员来执行此功能?谢谢,弗里索