问题标签 [database-first]

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

c# - EF DB-first 映射混乱

由于 EF 的这个小怪癖,我有一个令人沮丧的情况。这是该行为的简单演示。首先是数据库模式:

在此处输入图像描述

如您所见,RestrictedProduct它是产品的一个特例,我打算Product用一些特殊的代码来创建它的子类。

现在我导入到 EF 数据模型:

在此处输入图像描述

哎呀!EF 看到它只有 2 个字段,都是 FK,因此它将其映射为和RestrictedProduct之间的一对多关系。所以我回到数据库并添加一个字段,现在我的 EF 模型看起来好多了:ProductRestrictionDummyRestrictedProduct

在此处输入图像描述

但那个Dummy领域是愚蠢和毫无意义的。也许我可以删除它?我从数据库表和实体模型中删除了字段,然后从数据库中刷新模型......

在此处输入图像描述

不好了!Product-Restriction协会以新名称 ( ) 回来了RestrictedProduct1!另外,它不会编译:

错误 3034:从行 (x, y) 开始映射片段时出现问题:具有可能不同键的两个实体映射到同一行。确保这两个映射片段将 AssociationSet 的两端映射到相应的列。

Dummy除了将字段保留在RestrictedProduct表格上之外,有什么方法可以防止这种行为?

0 投票
2 回答
427 浏览

c# - 实体框架数据库优先不创建正确的模型

我正在尝试在 EF 5.0 中使用数据库优先方法,但它没有为我创建正确的模型。

这是我的数据结构:

论坛

论坛

用户

用户

帖子

帖子

关系 关系

问题

Forums主要问题是与表中的一对一关系Posts。该模型不将ParentForumIDand识别为可为空值,因此在表 (和)ReplyTo之间创建了一对多的关系。Forum-ForumPost-Post

此外,当尝试手动更改为一对一关系时,我收到此错误:

错误 113:多重性在关系“FK_Forums_Forums”中的角色“Forum1”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是*。...\模型\实体\模型1.edmx

Visual Studio 中的模型(编辑前)

该模型

我尝试使用代码优先的方法,但它产生的数据库结果很差,然后我意识到我可以配置数据库创建的行为,但我找不到一个好的资源来解释如何正确配置它。

我宁愿使用数据库优先的方法,因为它可以让我自定义我的数据库,但它仍然会生成一个包含许多错误的不正确模型。

所以我的问题是:

  1. 这样做的最佳方法是什么?

  2. 哪里可以先学代码,先学数据库?

  3. 为什么我的视觉工作室会产生这样的模型?

  4. 为什么当我尝试更改模型以适应我的需要时,它会给我前面描述的错误?

  5. 我在哪里可以了解迁移工具?我可以使用哪些功能来配置数据库创建?

0 投票
2 回答
1585 浏览

asp.net-mvc - 多对多关系/实体框架数据库首先使用 MVC 4 Internet 应用程序

我首先使用带有 VS 2012 和实体(5.0)框架数据库的 MVC 4 Internet 应用程序。

我用关系创建了我的数据库..

我创建了 ADO.NET 实体数据模型。我可以看到所有关系(一对一、一对多、多对多)。

我想使用“具有读/写操作的 mvc 控制器和使用实体框架的视图”创建我的控制器和视图。一对多和一对一没有问题。

多对多怎么样??

0 投票
1 回答
573 浏览

entity-framework - EF db first 和 table 没有 key

我正在尝试首先使用 Entity Framework DB 为大型数据库的报告网站进行快速原型设计。问题是其中一张桌子没有钥匙。我收到“错误 159:EntityType 没有定义键”。如果我在模型设计器上添加一个键,我会得到“错误 3024:必须为所有键属性指定映射”。我的问题是是否有一种方法可以在不向表中添加密钥的情况下解决此问题。这张桌子不在我们的控制范围内。

0 投票
1 回答
2742 浏览

entity-framework - EF 数据库第一个多对多附加字段

现在这可能是一个愚蠢的问题,但它让我很头疼。

我想要完成的是让 EF 生成 2 个具有 MM 关系的对象。 MaterialProduct。一个产品有很多材料,一种材料可以在多个产品中找到。诀窍是可以测量材料,例如,kg我需要知道一种材料在它所在的产品中能容纳多少公斤。注意:材料可以没有产品而存在,产品不能没有材料而存在。

这是我想出的最初设计,但显然行不通。

所以我的问题是,如何正确添加该QuantityOfMaterialInProduct字段,因为没有它 DBContext 工具会正确生成所有内容。

0 投票
1 回答
243 浏览

c# - 实体框架数据库第一个映射器问题

我正在使用带有 SQL Server 2008 R2 的 VS2010。

我是 c# 和实体框架的完整初学者。

我在下面的示例中遇到的问题是,当我尝试获取与特定选项卡关联的问题时,生成的 SQL 不正确。我认为这与我在 2 个引用同名字段的表上有一个 Tab_ID 外键这一事实有关吗?

但是,当我尝试获取与 Checksheets 关联的选项卡时,生成的 SQL 是正确的。我所做的一切都完全相同,但产生了不同的结果?

任何帮助将不胜感激。

下面我附上了使用的方法和输出以及我使用的数据库关系模型和映射器。

与 CheckSheets 关联的选项卡(按预期工作)

生成的 SQL

与标签相关的问题(不起作用)

SQL PRODUCED - EXTENT 3 是问题,我不明白为什么会产生它。

我创建了以下数据库:(我还没有 10 个发布图片的声誉,但链接如下) http://imgur.com/3Jchhlb

我为表设置了映射器,如下所示:

我的课程设置如下:

*标签配置

*问题配置

*检查表配置

基类

0 投票
1 回答
273 浏览

database - 为什么在实体框架5中成功修改了分离的实体?

我的代码是。

请帮助我,我很困惑为什么在数据库中修改了分离的实体

0 投票
2 回答
2398 浏览

asp.net - 如何更改使用 Entity Framework Power Tools 生成的类名

伙计们正在开发一个 Asp.Net MVC 项目,该项目已经使用存储库模式从 MS SQL Server 数据库中获取数据。

我现在打算将实体框架用于我们项目的一些新的特定需求,而不会干扰旧的存储库逻辑。我使用了 EF Power 工具 Beta 3 并从 Visual Studio 对我的数据库表进行了逆向工程,但生成的类与我现有的一些存储库类冲突,这些存储库类与数据库中的相应表同名,导致项目无法编译。我看过这个教程

但这讲述了将“tbl”前缀附加到表名而不更改生成的类名。但是,我自己尝试更改模板中生成的类名(存在于 CodeTemplates\ReverseEngineerCodeFirst 下,但它们仍然会产生冲突。

我的问题是我应该怎么做才能达到我的预期结果(与项目中的现有类没有冲突),还是应该完全采用其他替代方案?感谢您的帮助。

0 投票
2 回答
3322 浏览

c# - 实体框架数据库第一次重新生成让我失去了手动更改

我正在使用 MVC .NET 创建一个网站。

由于我是一名老派程序员,首先学习设计数据库,因此我选择了数据库优先方法。我还使用“代码生成”来创建扩展名为.tt. 到目前为止,一切都在工作,除了一件让我烦恼的事情。

经典场景:

  • 我意识到我错过了一个领域
  • 我在数据库中添加字段。
  • 我进入 edmx 并选择从数据库中更新模型。

然后我回到我的代码,并删除了我放在模型字段顶部的特殊 DisplayName 标签之类的东西。

例如,如果我有这个:

会变成

那是因为[AllowHtml]是在上一代模型之后添加的。有没有办法更新表格而不删除我在生成后添加的所有标签?我怎样才能做到这一点?

现在,我通过使用 SVN 进行一些还原来管理它,但它很快就会变得无法管理。

谢谢

0 投票
1 回答
550 浏览

asp.net-mvc - 从单独的数据库中提取 MVC 3 中的相关数据

作为 MVC 和实体框架的新手,我在执行复杂的数据查询时遇到了很多问题。我正在使用 Database First 方法,我需要了解从单独的数据库中提取相关数据的最佳方法。我已经连接到数据库并创建了 edmx 文件以及现有数据库中的模型。我将简化问题示例:如果我有一张包含员工信息的表:

然后我有第二个(在另一个数据库中)

如何将这两者联系在一起以在视图中提取员工的信息(姓名、地址等)?我最初的想法是进行连接,然后将其传递给视图:

我遇到的问题是我已经在使用 ViewModel,其中有多个模型被传递给视图。我需要能够一次将多个员工的信息与视图中的类似内容联系起来:

可能使用 ViewBag?或者有没有办法可以跨数据库关联外键?请记住,这是数据库优先,因此会生成 edmx 和模型文件。我还没有找到我在这里尝试做的任何好的例子。我会很感激任何帮助,如果需要可以提供更多细节。