问题标签 [entity-relationship]

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 投票
2 回答
219 浏览

c# - 为什么我手动创建的 Linq2Sql 表关系会出现在代码中?

我有一些观点想在我的 Linq2Sql DBML 文件中关联起来。

我右键单击,选择“添加关联”并手动创建从孩子到父母的关联,例如:

但我不能在我的代码中这样做:

有什么线索吗?如果数据库中存在关系,它们不存在也不能存在,那么我将能够做到这一点。

0 投票
1 回答
21546 浏览

java - 休眠 @OneToMany 没有单独的连接表

考虑以下数据库模式:

User.groupId = UserGroup.id,所以一个用户只能是一个组的成员,但一个用户组可以存在多个用户。到目前为止很好,让我们在 Hibernate 中制作实体。这是User

这是UserGroup

现在我会得到一个错误"Table mydb.usergroup_user' doesn't exist",因为它需要一个连接表。由于与此应用程序将替换的其他应用程序的互操作性,我的数据结构是“一成不变的”,因此我不会制作连接表。此外,它不应该是必需的。我怎样才能制作一个List<User> users简单的用户列表User.groupId == UserGroup.Id

0 投票
1 回答
831 浏览

sql-server - 在 linq2sql 中使用关系/外键?

任何人都可以帮忙吗?

我在我的 Reservation(prim key) 和 Insurance(for key) 表之间创建了一个关系,并导入到 linq2sql 并检查了我自动创建的 c# 文件,果然我有 reservation.MyFieldNames 等 PLUS reservation.Insurance 这是我的关系但是reservation.Insurance 我看不到 Insurance 的字段名称 - 我错过了什么吗?

我必须打电话给GetInsurances或其他什么吗?我什么也没看到.. 事实上保险是 Linq.entityset 类型的???

我也希望创建我的预订表(这很好而且很容易),然后从 Ilist 或其他东西自动“注入”保险(即 1 到多个)..

这不可能吗,

任何帮助都非常感谢

ps 我确实通过 T4 Toolbox 创建了我自动创建的 c# dto 文件,但这应该没有任何区别。我只是为每个实体有一个单独的文件..

0 投票
2 回答
1762 浏览

mysql - 生成 MySQL 模式的 ERD 工具

我正在寻找一种工具,可以让我绘制 ERD 并生成创建相应 MySQL 模式的 SQL。附加要求是:

  • 在 Windows 上运行
  • 零成本

如果它也可以在 Ubuntu 上运行,则可以加分,但这不是“必备”。

谢谢,唐

0 投票
6 回答
32632 浏览

database - 如何可视化Oracle数据库中表的关系

我知道在 Access 中有一种方法可以可视化图表中表之间的关系 - 有点像 ER 图。

我是甲骨文的新手。我想知道我是否可以用 Oracle 做同样/类似的事情。有人可以提出一些建议吗?

0 投票
2 回答
274 浏览

c# - 使用相关对象填充 Entify Framework 查询的有效方法?

我将 EF 用于一组对象,并希望使用其他两个表中的匹配条目查询一种类型的对象。这是将查询转储到 XML 输出中。起初,使用连接,因为在原始数据中每个Employee总是有 1+ 个Computer对象实例(下面的解决方案 #2),但这不一定是真的。

为了这里的目的,想象一下:

  • 一个员工对象,
  • 每个 Employee 都有一个EmployeeType(一些固定的条目)和
  • 每个 Employee有零个或多个Computer对象(通常为 0-3 个)。
  • 每台计算机属于一个员工,并非所有员工都有一台计算机。
  • 每个 Employee 都有一个搜索所依据的条件(例如Division)。

所以我看到了几种可能的解决方案:

  1. 在循环中使用Employee.Computer.Load(),但有 10,000 多行,这会导致巨大的性能损失。

  2. 在查询中使用连接,但这会忽略所有没有Computer的员工

  3. 使用 Linq to Entities,但这似乎有 #1 的开销:加载Computer时,它会访问 EACH Employee的数据库。

  4. 使用第二个查询(所有Computer具有匹配的Computer.Employee.Division),然后在Employee循环中,为给定的员工添加任何Computer。在实现这一点时,我发现仅运行第二个查询(使用ToList()),EF就会使用我需要的对象填充正确的Employee.Computer列表。

在这里,#4 仅使用 2 个数据库命中而不是 10k+ 加载数据,EntityFramework 实际上整理对象并创建所有关系。

我的问题

  • 对于 #4,EF 填充Employee.Computer列表的事实是我可以依赖的吗?如果是这样,你能指出我的文档吗?
  • 有比#4更好的方法吗?

更新:好吧,臭虫。对不起,我只是把它搞砸了。我专注于与“计算机”表的关系,并错过了这样一个事实,即我有一个明确的Employee.EmployeeTypeReference.Load()没有第一次测试空值,所以“计算机”列表完全没有问题。

我只是在运行一些性能测试并将 Craig 的解决方案添加到组合中时才发现这一点。事实上,记录不是“员工”和“计算机”而是抽象,我(有条件地)在 XML 输出中包含每个字段,但它们很小:名称、ID(PK)和 ID(FK)加上“员工”表上的 INT。因此,我的假设是性能会相似,因为 EF 创建的对象不会比投影重多少。

无论如何,这里是“经过”时间是此查询之前和创建结果 XML 之后的差异的结果。

  • 案例 1:与 #2 相同,但使用Include()语句:

    list = ve.Employee.Include("Computer").Include("EmployeeType").Where(e => e.Division.ID == divId).OrderBy(e => e.Name);

    已过:4.96、5.05

  • 案例 2:使用内联Load()

    list = ve.Employee.Where(e => e.Division.ID == divId).OrderBy(e => e.Name);

    已过:74.62

  • 案例 3:与 #4 相同,但使用Include()语句:

    list = from e in ve.Employee.Include("Computer").Include("EmployeeType") where e.Division.ID == divId orderby e.Name select e;

    已过:4.91、5.47

  • 案例 4:使用内联Load()

    list = from e in ve.Employee where e.Division.ID == divId orderby e.Name select e;

    已过:74.20

  • 案例 5:使用 *Include("EmployeeType") 和单独的 "Computer" 查询,让 EF 关联:

    elist = ve.Employee.Include("EmployeeType").Where(te => te.Division.ID == divId).OrderBy(e => e.Name).ToList(); alist = ve.Alias.Where(a => a.Employee.Division.ID == divId).ToList();

    已过:4.50、4.02

  • 案例 6:Craig 的预测建议:

    elist = from te in ve.ThesaurusEntry where te.Division.ID==divID orderby te.Name select new { ID = te.ID, Name = te.Name, Type = te.EmployeeType.Name, Freq = te.Frequency, Aliases = from a in te.Alias select new { ID = a.ID, Name = a.Name } };

    经过:0.73、1.25

结论

Load()很昂贵,因此请使用Include()或至少使用IsLoaded进行测试

投影有点乏味,但比 EF 修复快得多。[在“窄”表上进行有限测试]

0 投票
3 回答
958 浏览

entity-framework - ADO.NET 实体数据模型:自动生成的类

我有一个如下表结构:

AddressID 和 BillingAddressID 是地址表中的外键。当我基于这个表生成我的模型而不是在公司类中获得我期望得到的东西(AddressID、BillingAddressID)时。我得到以下信息:

它似乎正在用 Addresses1 替换 BillingAddress(不太清楚为什么会这样)。此外,这似乎很常见,只要我有外键,即我得到 Table 而不是 ID,然后是 TableReference。

我想我可以看到发生了什么,即,而不是单独给我 ID,它将进行查找并找到 ID 所指的实际记录。但是,我不太确定 TableReference 字段的用途......

可以为我更好地解释一下吗?

提前致谢。

0 投票
2 回答
261 浏览

c# - 从可怕的数据源生成干净的业务对象类

我从一个业务/实体类层的空白开始,但使用现有的数据源。通常这将是蛋糕,启动实体框架,将其指向数据库,然后收工,但目前,我需要从第三方供应商数据源获取实际数据......

  1. 只能从通用 ODBC 提供程序(不是 SQL)访问
  2. 语法、命名非常糟糕,在某些情况下,到处都是重复数据
  3. 拥有超过 100 个表,当它们组合在一起时,将在 1,000 列/数据属性附近

我只需要这个数据库的只读,所以我不需要支持更新/插入/删除,只需要在每次应用程序运行时将“脏”数据提取到干净的实体中。

我想尽可能地将数据库与我漂亮、干净、命名良好的实体类隔离开来。

有没有好办法:

  1. 从数据库表生成初始实体类?(那样我只是重命名和修复类属性来清理它,而不是从头开始。)
  2. 将数据库中的数据映射到我漂亮、干净的类中而不编写 1000 个属性集?

编辑:这里的主要目标不是想出一个伪 ORM,而是根据已经存在的内容生成尽可能多的现有代码,然后根据需要进行调整,从而消除大量的体力劳动- 密集的课堂写作任务。

0 投票
2 回答
9924 浏览

entity-framework - 添加实体模型时出现错误 3007

将实体模型添加到解决方案时出现错误 3007。

我找到了这些链接:

很好的解释

简短的回答

关于这个错误:

错误 1 ​​错误 3007:从第 89、94 行开始映射片段时出现问题:两个片段中的非主键列 [Person_ID] 被映射到不同的概念侧属性 - 数据不一致是可能的,因为相应的概念侧属性可以独立修改。

他们的回答:我同意他们的结论,即通过简单地删除标量属性 Person_ID 并保留导航属性,我的问题就得到了解决。然而,这不是很可扩展,因为我正在动态构建我的数据库并且我的实体经常更新。我不想每次更新它时都必须经过并清理我的实体。

我的问题:有没有办法通过纠正 EF 构建实体的方式来修复错误?或者有没有办法通过代码删除标量属性?也许我甚至忽略了一些选项。

0 投票
2 回答
11398 浏览

objective-c - 为什么这个 Core Data 示例会崩溃?

我有一个模型,其中有一个 Person 实体和一个 Picture 实体。在我的 Picture 实体中,我有一个与 Person 有关系的属性。

我想举一个关于如何将图片添加到人员的示例,因为我所做的不起作用。

if ([managedObjectContext save:&error]) 它在线崩溃,并且在控制台中我有这些错误:

在我以前的观点中,我有以下代码