问题标签 [ef-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 回答
171 浏览

entity-framework-5 - Entity Framework 生成的类:相同类型的两个对象在更改后总是相等的

我正在尝试比较两个相同类型的对象,以查看是否进行了更改。让我解释一下这个过程:

在页面加载时填充表单。填写表格后,我将其原始数据保存在会话变量中:

在进行一些更改后保存表单时,我会比较这两个对象,它们总是相同的。存储在 Session["oldForm"] 中的数据与具有更改的 newForm 对象相同。

我正在使用实体框架并首先使用数据库生成对象。这只发生在具有 1-N 关系的对象上。此过程与没有任何关系的对象完美配合。

谁能告诉我发生了什么以及如何解决这个问题?

0 投票
1 回答
71 浏览

asp.net-mvc-3 - 对 MVC 脚手架感到困惑

我正在学习MVC3。我花了好几个小时尝试了一些东西,现在我想我完全迷路了。我首先创建了一个数据库,然后从中生成了模型。现在我想知道是否可以使用脚手架生成带有 CRUD 视图的模型?我尝试了几件事。首先是错误 - 无法获取元数据。谷歌搜索首先误导我 EF4.x 有问题。重新安装它并浪费时间。然后我尝试了自动代码生成功能,但它在先前生成的类之间给出了歧义错误。甚至有可能做我正在尝试的事情吗?如何?还是我必须为视图编码?

0 投票
2 回答
442 浏览

c# - 如何将 MVC4 与 EF5 Db First 单独项目结合起来

在我的解决方案中,我有两个项目。一个是主MVC4项目。另一个是一个DataLayer 项目,它包含一个从现有数据库(以后可能还有一些存储库)生成的 Entity Framework 5 edmx 模型。

问题是 pocos EF5 生成位于 DataLayer 项目中。但我需要它们在 MVC4 项目的 Models 文件夹中。

我希望单独的 DataLayer 项目增加抽象和关注点分离,但我不知道如何将这两个部分放在一起。
(我想在 Models 文件夹中维护另一层 pocos 但这似乎不对)

0 投票
2 回答
141 浏览

winforms - EF:代码优先约束

我正在使用 EF 5 开发 Windows 窗体应用程序并开始使用 Code First 方法构建数据库。我的问题是:“与数据库优先或模型优先相比,代码优先方法是否有一些限制?” 有什么建议么 ?

0 投票
1 回答
148 浏览

visual-studio-2012 - 是否可以从 EF5 数据库优先转换为代码优先?

我即将开始一个新项目,虽然我团队的大部分经验是直接在数据库上使用 VS 数据库项目和 SSMS,但我们希望改用 EF。但是,时间限制不允许我们在实施之前花时间充分学习 EF。

乍一看,EF Code-first 中的代码优先迁移似乎是一个非常有价值的工具,但是以代码为中心的数据库优先(它们似乎没有一个好名字)代码迁移没有似乎是一个特点。相反,似乎只有以代码优先开始的项目才支持这一点。

是否可以从数据库开始,然后(在开发过程中的某个时刻)以某种方式转换为代码优先,以便利用代码优先迁移?

0 投票
1 回答
207 浏览

c# - “从数据库更新模型”向导正在删除重命名的 POCO 类的映射

我正在使用 EF 5 构建一个应用程序来与现有的 Oracle 数据库通信。我不允许更改数据库架构的任何部分。我已经使用 VS2012 向导从数据库中生成了我的模型,并且所有类都以其对应的 Oracle 命名。

数据库中对象的命名是 QUITE_UGLY_AND_INCONSISTENT,所以我想重命名 POCO 类和属性。我可以通过 EDM Designer 轻松做到这一点。结果,我得到了整齐命名的类和属性名称,它们映射到数据库中的 UGLY_NAMED 表。我可以成功执行查询,一切顺利。正是我想要的。

但是,当我需要向模型添加新表时,我会运行“从数据库更新模型”向导并检查要导入的其他表。它突然在“删除”选项卡下列出了我重命名(但仍然正确映射)的类,说它在数据库中找不到它们。当我单击完成时,我现有的类未映射,我必须手动将每个属性重新映射到其相应的 DB 列...或者从版本控制回滚到 EDMX 文件的先前版本。

我正在寻找认为对这个问题最优雅的解决方案,因为我需要应用程序尽可能地可维护。我强烈支持一种方法,它可以让我从数据库中自动生成新类,同时保留现有的重命名对象及其映射。

  • 我是否忽略了一些阻止更新模型向导删除我现有映射的方法?
  • 我应该使用不同的方法来重命名生成的类吗?
  • 我是否应该让生成的类保持不变,而是构造一个命名合理的包装类,这些包装类会暴露给我的应用程序的其余部分?
  • 我应该避免自动生成,而是采用代码优先的方法吗?这是一个非常不利的选择,因为我需要尽可能少地花费在手动模型编码和映射上的时间。添加对象将是一项非常频繁的任务。
  • 我是否应该完全使用不同的 ORM..?
0 投票
2 回答
84 浏览

c# - 半设计数据库使用什么?模型优先还是数据库优先?

假设您有一个当前正在使用的数据库。它有一张表,其中包含有关Customers.

假设您想围绕它创建一个应用程序。您需要Customers在程序中使用该表,但您还需要添加一些新表,可能连接到Customers. 例如,您需要添加一个Orders与该表有某种关联的Customers表。

我已经开始学习实体框架。我已经了解了一些关于“数据库优先”和“模型优先”数据模型的知识。但情况是,我想做的事情不属于这些类别中的任何一个。我既没有完全空的数据库,也没有可以直接在程序中使用的已完成的数据库模式。

我应该怎么办?如果我使用“模型优先”并使用 Visual Studio 设计器设计我的实体,我可以使用它来创建数据库架构的相关部分吗?

0 投票
1 回答
195 浏览

entity-framework - EF5 未根据现有数据库正确创建模型

我有 VS 2012 和现有的数据库(sql 2012)。

在数据库中,存在一对一的关系,并且某些列不可为空,默认值为“”。EDM 生成了 edmx 图,但所有关系都是一对多的。

我有Customer列不可AddressReference1的表,其默认值为“”。生成实体类 Customer 后,我在 .edmx 设计器中删除了此属性,然后编译项目。

如果我从设计器中删除默认值为“”的不可为空属性之一,则在编译项目时会生成如下错误。

错误 1 ​​错误 3023:从第 568 行开始映射片段时出现问题:必须映射表 Customer 中的列 Customer.AddressReference1:它没有默认值且不可为空。C:\Users\cliu\Documents\Visual Studio 2012\Projects\FulfillmentService\ShipmentModel.edmx 569 15 FulfillmentService

如果我想从实体类中删除一些属性,我该如何解决这个问题?

0 投票
1 回答
86 浏览

c# - EF5中哪个方法负责创建数据库

我有一些问题:

  1. 在 EF5 代码优先 API 中,哪个方法负责检查数据库是否退出,如果不是,哪个方法创建数据库?

  2. 如果我首先在我的 DAL 项目中使用 EF 代码,并且我希望 EF 生成其他数据库用于测试目的,我可以使用 ef 来做到这一点吗?我已经更改了连接字符串中的初始目录以检查它是否创建了其他数据库,但它没有并抛出异常

  3. 通过使用 ef Code-First 或 DataBase-First,我们终于有了 DbContext 类,EF5 怎么知道我们使用了哪个方法来执行它的内部操作?

谢谢。

0 投票
1 回答
1579 浏览

entity-framework - Entity Framework DB First:将关联表转换为导航属性

我首先使用实体​​框架数据库,但我想从 Code First 范例中复制以下行为:

在 Entity Framework Code First 中,您可以执行以下操作:

并且数据库会生成关联表来表示多对多关系。

我将 Database First 与旧数据库一起使用。我拉入实体,它包括表示我们两个表之间的多对多关系的关联表。

由于关联表是作为实体包含的,因此导航属性如下:

所以要导航,我必须:

代替:

所以问题是:

有没有办法删除表示关联的实体(ThingStuff)并告诉 EntityFramework 现有表以创建多对多导航属性?