问题标签 [legacy-database]

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 回答
2135 浏览

entity-framework-4 - 当主键名称不同时,如何使用 TPT 继承模型?

对遗留数据库使用 Entity Framework 4.1,我无法生成一组 TPT 继承模型,这些模型不是复数形式,并且对公共主键使用不同的名称。

我正在使用数据库表组织、帐户和公司,如下所示:

Account.AccountID 和 Company.CompanyID 有一个 FK 约束,即这些列中的值也必须包含在 Organization.OrganizationID 中,因此如果没有组织行,两者都不能存在。如果我从头开始设计这些表,Account 和 Company 都将使用 OrganizationID 作为它们的主键。

当我尝试使用下面列出的简单选择代码时,我收到错误:

属性“OrganizationID”不是“公司”类型的声明属性。使用 Ignore 方法或 NotMappedAttribute 数据注释验证该属性是否已从模型中显式排除。确保它是有效的原始属性。

0 投票
2 回答
508 浏览

grails - 将数据挖掘 sql 查询转换为 Grails 等价物?

我想构建一个 Web 界面来呈现日志数据。这应该是尝试使用 Grails 构建一个小型 Web 应用程序的好机会,我一直想尝试一段时间,但是我在理解如何将今天的手动 sql 查询“翻译”成对 Grails 有用的东西。

在 Grails In Action 一书中,我没有找到太多关于将现有数据表改造成域类的信息。所以我把它带到这里来澄清一下:)

这基本上是我今天登录的日志表的架构:

我可以看到自己在做一些事情,比如使用映射创建域类 User 和 HosthasMany = { logs: Log }以及 Log 类belongsTo = { user: User },但不知道如何以有效的方式使用它来查询我的数据,尤其是在处理数十万条日志行时。我通常对诸如"find the average time used for method='fooBar' and user='john_doe' the last 30 days"或之类的数据进行查询"count the number of rows where method='fooBaz' and host='localhost' from May to December"

您将如何检索这样的信息?您是否会忘记映射日志条目而只是在表上使用某种直接 SQL(HQL?)查询,或者这个(我不知道的)GORM 野兽可以用于这样的事情吗?

0 投票
1 回答
413 浏览

sql-server - Entity Framework 4.0 使用非主键的多对多关系

我正在尝试使用我继承的遗留 MS SQL 数据库使用 Entity Framework 4.0 构建通用存储库。很熟悉的场景。

我需要将类别信息添加到相当长的现有项目列表中。

这些项目可以同时属于多个类别,因此我创建了一个名为CategoryMapping的映射表

数据库图

不幸的是SchemaDefinitionCode不是唯一的,不能在数据库中作为外键 (FK)。

我试图将我自己的部分类添加到 DefinitionSchema 实体,但由于它没有被索引,这会对性能造成严重影响。用于测试的演示代码,我不想每次加载时都创建一个新的上下文

然后我可以像这样调用一个项目列表:

如何在不消除现有数据库结构的情况下以最有效的方式链接我的表和映射?

0 投票
2 回答
796 浏览

django - ForeignKey 字段上的 Django 零值

我正在研究设计非常糟糕的遗留数据库。在某些表上,外键不仅可以为空(没关系),它们也可以为 0。

我将其中一个表映射到一个模型,当它在表中为 Null 时返回所需的 None 值,但在值为 0 时引发异常。

有没有办法让它在包含值 0 的外键上返回 None。

0 投票
4 回答
3102 浏览

java - 在处理遗留数据库时,Hibernate 会因丢失的行而窒息

我正在尝试在遗留数据库(仍然有遗留 PHP 客户端)上实现休眠,并且遇到了一些问题,因为编写原始应用程序的人不知道他们在做什么。

数据库设置为没有任何列可以为空,因此如果没有记录,它们默认外键为 0。此外,它们在表上没有正确的外键,因此有一些具有无效 ID。我没有选择更改架构或将相应的列设为空的选项。

这是我从休眠中得到的错误:

我想要的是一种处理这种垃圾的优雅方式,如果该行无效或不存在,该字段将为空,但我没有任何运气在文档中找到如何处理这个问题。

有小费吗?

0 投票
1 回答
429 浏览

ruby-on-rails - Rails 3: DataObjects::SQLError -- 如何阻止这些在 *warnings* 上产生错误?

当我将几个字段插入到旧数据库模式中的表中时(通过 DataMapper),我得到以下信息:

我实际上并没有为该字段指定一个值,但底层数据库模式(MySQL)也没有一个集合。这实际上不会导致问题,它只是意味着 MySQL 执行插入,但在完成后显示“警告:1”。然而,该警告是导致 Rails 停止并回滚插入的原因。我知道我可以修复这个字段,但还有数千个类似的字段,我正在寻找是否有办法让 DataObjects 冷静下来,只在实际 SQL 错误上出错,而​​不是在警告上?

Rails 3.0.7、Ruby 1.9.2、DataMapper 1.1.0

0 投票
1 回答
260 浏览

c# - NHibernate 在具有复合键的遗留数据库中一对一

我们有一个遗留数据库,我们想使用 NHibernate 读取数据。我们要映射的表如下:

用户

  • PK - 用户 ID
  • PK - GroupId
  • 位置来源
  • ETC...

地点

  • PK - 用户 ID
  • PK - GroupId
  • PK - 来源
  • X

每个用户都有一个或多个位置。可以从由Source列标识的不同来源输入位置。Users 表的 LocationSource列包含与该用户最相关的位置源。

在我们正在编写的当前应用程序中,我们只需要最后一个位置。这主要是出于性能原因,我们不想在加载用户时加载所有位置(使用外连接)(延迟加载也不可能)。

这些类看起来像这样:

我无法弄清楚如何将数据库方案映射到这些类。到目前为止,我尝试的一切都失败了。

我会感谢你的帮助。

0 投票
1 回答
119 浏览

entity-framework-4.1 - Entity Framework 4.1 - 映射错误的模式

所以我有一个格式错误的模式,由于很多遗留代码依赖关系,我现在无法触及。

假设我有一个表 Test 并且它有一个声明为 int 类型的 IsValid 列。

我希望 poco 域对象具有 IsValid 作为布尔值的正确意图。在我的存储库中应用查询时,我希望它在查询中正确解析。

应解决:

EntityTypeConfiguration 是否可以以这种方式映射,或者我是否必须创建一个自定义表达式解析器来查找存储库中的特殊情况(我不想这样做)?还是有另一种方法(不暴露域对象上的多个属性)?

谢谢!

0 投票
1 回答
678 浏览

database - NHibernate 在具有两个“主”键的表上

我正在学习 NHibernate,以便将它分层到一个相当奇特的遗留数据库上。其他应用程序使用相同的实时数据库,因此我无法进行会影响它们的更改。

我遇到了一个问题,因为一个代表硬件设备的表有两列用作事实上的主键。一个是真正的主键,一个自动生成的行 ID。另一个是唯一且非空的硬件序列号。

数据库中的许多其他表与该表具有外键关系。但是,其中一些使用真正的主键 - 整数行 id - 作为外键,而另一些则使用设备的硬件 id。

请注意,在实践中,硬件 ID 和行 ID 一旦配对,将保持配对。

我是否能够在 NHibernate 中创建映射来处理这个问题,或者我需要创建一些视图来给我一个更标准化的模式,并使用 INSTEAD OF 触发器来使它们可更新?

正在使用的数据库是 MSSQL 2000,以防万一。

0 投票
1 回答
2474 浏览

mysql - 使用 TEXT 字段将 Grails 域类映射到遗留数据库的问题

我正在尝试使用 Grails 1.3.7 和 MySQL 5.1.56 为遗留数据库构建一组域类。我将 BuildConfig.groovy 文件中的 MySQL 连接器指定为“mysql:mysql-connector-java:5.1.13”。

数据库模式有一个名为“抽象”的 TEXT 类型的字段。

我在我的类中声明相应的属性如下(为清楚起见仅显示相关部分):

当我运行集成测试时,出现以下错误:

如果我将声明更改为

我犯了同样的错误。如果我将类型设置为“longtext”,我会得到

我看到一个看似相关的Hibernate bug的讨论,我想知道是否有解决它的方法,或者其他一些建模具有 TEXT 字段的模式的方法。

谢谢,

基因

编辑:这是相关的 DataSource.groovy 片段:

EDITED(2):这是自定义Dialect类,正如@Stefan 的回答所建议的那样: