问题标签 [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 投票
1 回答
1013 浏览

ef-code-first - 首先从 EF 5.0 代码迁移到数据库:要清理哪些文件?

将基于 Entity Framework 5.0 的项目从代码优先迁移到数据库优先时。我们将使用标准的 VS2012 向导从数据库中生成 edmx 模型,但除此之外我们还有其他步骤吗?我想我必须删除我定义了代码优先模型甚至迁移文件夹的所有类 - 除了这两个之外还有其他清理操作吗?

[编辑]: 报告回来。

所以实际体验在我最初的期望和 Ladislav 提到的之间(就像他说的,确切的条件取决于代码)。对我来说,整个手术大约需要 15-20 分钟,主要涉及

  • 分支创建(安全,以防万一发生爆炸!)
  • 删除代码优先类和源代码(我将它们移到 VS2012 之外以获得差异参考)
  • 从数据库创建 EDMX 模型(将相同的命名空间等传递给向导以减少差异程度)
  • 快速检查代码优先类和自动生成的数据库优先类。这主要是 1:1,因为我们一开始就在代码优先模型中使用了合理的名称。
  • 一个一个地编译和修复每个错误
  • 注意到许多错误是由于 EF 5 的自动复数与我自己对不同字段的复数造成的。通过快速区分大小写的搜索修复了 40 多个错误 -> 全部替换
  • 编译后重新运行所有测试
  • 重新合并功能分支!

谢谢

0 投票
1 回答
3523 浏览

vb.net - Entity Framework 5 Database First 的依赖注入。入门?

我正在考虑使用 Entity Framework 5 和 Database First(连接到 SQL Server 2008 R2)创建一个 VB.NET 11 WPF MVVM 应用程序。

我选择了 Database First,因为我正在将现有解决方案迁移到 WPF MVVM,当然,其中的数据库已经存在。

我想开始使用依赖注入,这样我就可以尽可能多地对我的代码进行单元测试。

我似乎无法找到关于如何将依赖注入与 EF DB-First,尤其是 vb.net 一起使用的清晰简洁的演练。尽管我敢肯定,即使是 C# 示例也可以。

我真正想要的是一个简单的分步指南,解释如何设置解决方案,如何设置每个部分为依赖注入做好准备等,但这些似乎很难实现。

到目前为止,我已经创建了解决方案及其项目,如下所示;

  • DBAccess - 它只包含我的 .edmx 文件和一个能够将 ConnectionString 提供给构造函数的小模块。
  • DBControl - 这包含了我用来在我的 EDMX 和我的 ViewModel 之间提供一个层的各种类。具体来说,我在这里填充复杂类型(我使用设计器创建的)以通过 UI 显示“更友好”的数据,以及将这些“友好”复杂类型转换为映射实体以进行保存/更新。我的数据库中每个表都有一个类。每个都有两个“FetchFriendlyRecords”方法(一个接受过滤器)和一个“ AddUpdateFriendlyRecord ”方法。我为每个类创建了一个接口。每个类在其构造函数中接受一个 DbContext,我只是从 DBAccess 项目传递我的 DBContext。
  • MainUI - 这包含我的 MVVM 层,并引用 DBControl 项目中的每个类以提供 DataBinding 等。

我已经看到建议,与其花时间编写一个能够使用 EF 进行单元测试的复杂解决方案,不如创建一个填充了测试数据的牢固模拟数据库,并将代码指向模拟数据库,而不是住一个。但是,我更希望能够创建一个完全无需访问 SQL Server 即可运行的内存解决方案。

任何帮助都会很棒,包括告诉我这一切是否都错了!!

更新:

我采用了下面 Paul Kirby 提供的解决方案,并创建了我相信的“某种”存储库模式。

我创建了一个界面;

然后我逐个类地实现了这个接口;

我使用构造函数注入将 dbContext 插入到类中。

我曾希望能够使用我现有的上下文和“努力”单元测试工具来模拟一个假的 dbContext 。

但是,我似乎无法让它发挥作用。

在此期间,在我的单元测试项目中,我正在删除(如果它已经存在)并使用 SQLCMD 命令创建一个空的测试数据库,使用与我的实时数据库相同的模式。

然后我创建一个引用测试数据库的 dbContext,用测试数据填充它,并对此进行测试。

作为说明,我将重构我的“添加/编辑”方法以使用实际的基本实体,而不是我的“友好”复杂版本,这是当时最简单的方法。

0 投票
1 回答
403 浏览

entity-framework-5 - 实体框架数据库首先,自引用实体层次结构的接口

我有一个自引用的实体类别,它有子类别。它工作得很好。

现在我想实现一个 JsTree 助手,但是因为我有另一个使用类似结构的不同项目(类别是两个项目中 100% 相似的实体),所以我想在类库中实现助手并使其对两者都可用。

这是实体框架生成的代码,这里没有变化:

这是我写的界面:

然后我为实现 ICategory 的 Category 添加了另一个部分类:

问题是我收到以下编译错误:

错误 6“MyProject.EntityFramework.Models.Category”未实现接口成员“ICategory.Subcategories”。“MyProject.EntityFramework.Models.Category.Subcategories”无法实现“ICategory.Subcategories”,因为它没有匹配的返回类型“System.Data.Objects.DataClasses.EntityCollection < ICategory >”。

有什么想法可以解决这个问题吗?我究竟做错了什么?类别正在实施 ICategory 所以 ICategory 中的子类别(ICategory 集合)应该匹配,不是吗?

我正在使用 EF 4.4,但我认为问题与此无关。提前致谢。

0 投票
2 回答
5585 浏览

asp.net-mvc-4 - SimpleMembershipInitializer 不会初始化

我正在努力在我的 EntityFramework / MVC4 / DatabaseFirst 项目中获得一个简单的成员资格方案。我发现了很多首先使用代码的示例,但没有先使用 DB。

我遇到的问题是 InitializeDatabaseConnection 抛出错误(“无法找到请求的 .Net Framework 数据提供程序。它可能未安装。”)代码如下所示:

我不确定什么 DataProvider 失败了。如果我尝试跟踪“进入” InitializeDatabaseConnection 调用,它会立即引发错误。

我错过了什么?

信息:
DALEntities 是其余 EF 使用的 connectionString 的名称。下面的代码工作得很好......

我来自 web.config 的连接字符串部分:

这篇文章似乎在问同样的问题(但在模型优先的背景下),但还没有解决方案:Using SimpleMembership with EF model-first

另外,我看到WebSecurity.InitializeDatabaseConnection()帮助文本有一个重载:Initializes the membership system ((blah blah <snip> ProviderName: the name of the ADO.NET data provider. If you want to use Microsoft SQL Server, the WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String, String, String, String, Boolean) overload is recommended. 我确实希望连接到 MSSQL 服务器……这需要吗?

0 投票
0 回答
1628 浏览

mysql - 如何使用 MySQL 创建 MVC Database First 应用程序?

我可以在 MVC 应用程序中使用 MS SQL,但现在我想用 MySQL(MVC 4、VS 2012、MySQL 5.5)创建 MVC Database First 应用程序。我可以在服务器资源管理器窗口中连接到 MySQL。当我创建新的ADO.NET Entity Data Model时,数据源列表中没有 MySQL。

在此处输入图像描述

如何使用 MySQL 创建我的第一个应用程序?

0 投票
1 回答
3015 浏览

entity-framework - 首先在 mvc 4 数据库中自动生成模型?

我首先使用数据库和实体框架创建了一个 mvc 4 Web 项目,但很惊讶地发现默认模型不是自动生成的,有没有办法从我的 .edmx 文件中创建它们,或者还有其他方法可以节省手动编码吗?

任何帮助将非常感激

更新:

抱歉,应该提到我正在寻找一种使用基本方法生成简单模型的解决方案,例如:

0 投票
1 回答
2721 浏览

.net - Entity Framework 4.1 数据库优先依赖注入工作单元

好的,有大量示例使用 Code First 的依赖注入的工作单元,使用通用存储库和所有这些好东西。

有没有人有使用数据库优先(edmx 与 dbContext Generator (T4))、存储过程作为函数导入、具有依赖注入的工作单元的示例。

0 投票
1 回答
373 浏览

asp.net-mvc - MVC4 外键约束阻止将插入发布到 SQL 数据库

使用 MVC4 我试图将一列插入到具有两列复合键的链接表中。两列都是两个单独表中的主键。

Key1 是从 Web 表单中的隐藏字段中提取的,该字段由 URL 中传递的 id 生成。

Key2 是从第二个 PK 表的名称下拉列表中选择的值。

据我所知,这些值是正确的(它们出现在两个主键表中)。

有谁知道为什么我从 HttpPost Create 操作(主要是默认脚手架代码)中收到一个错误,告诉我与第一个 PK -> FK 约束存在冲突?

0 投票
1 回答
164 浏览

c# - EF4 复杂 Select():返回 IEnumerable 或 IEnumerable从业务层?

我开始了一项新工作,我们正在将一个相当大的 VB.NET 2.0 应用程序(带有数据集)迁移到 C# 4.5(带有 EF4。)

在我们的业务层,我们的“搜索”函数现在返回 EDMX 中定义的类的 IEnumerables。所以这样的事情很简单:

但是,当我们的 EF4“Select()”方法生成更复杂的自定义(匿名)类型时,情况会更加复杂:没有生成的类对应于结果。

因为这个函数必须跨越层边界(业务到 UI),所以我认为适当的解决方案是为此查询定义一个自定义类型,然后返回该类型的 IEnumerable;例如

哪里ProductAccountSummary是手工制作的 DTO(即 POCO)。

然而,在代码审查期间,团队负责人未能通过我的方法;他要求我删除 DTO 并将方法签名更改为:

....原因是我们仍然可以将 IEnumerable 绑定到我们的 UI 网格等,而无需每次需要使用自定义类型时手工制作 DTO 的开销。

所以我的问题是:

  • 在 EF4 中,跨层边界传递自定义类型集合的典型方法是什么?返回一个 IEnumerable (隐含地,“对象”)对我来说似乎不正确。我错过了什么吗?
0 投票
1 回答
3729 浏览

entity-framework - ef5 数据库第一个数据注释

我正在使用 VS2012 启动 MVC4。我还将 EF5 与“数据库优先”方法一起使用来创建我的类。

但是,由于可以重新生成生成的眼镜,我无法将数据注释详细信息用于帮助验证。

我已经看到了一些使用 MetaData 和部分类的代码片段,但我想知道是否有人知道一个小的可编译示例,我可以查看并分解以更好地了解各种类如何相互链接。

非常感谢您的帮助。戴夫