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

c# - 将列映射为 db 中的 IDENTITY

虽然我已经用 标记了我的 ID 列.Identity(),但生成的数据库架构没有IDENTITY设置为 true,这在我添加记录时给我带来了问题。如果我手动编辑数据库架构(在 SQL Management Studio 中)以将Id列标记为IDENTITY,那么一切都会按我的意愿进行 - 我不能让 EF 自己做到这一点。

这是我的完整映射:

当我使用 EF 构建和重新构建数据库以进行集成测试时,我真的需要自动完成此操作......

编辑: 嗯......在评论中,我被要求提供足够的代码来执行这个,所以我将我的代码剪切并粘贴到一个控制台应用程序中(这样你就不需要我所有的课程......)突然间刚刚工作。我想我在某处忘记了一些方法调用,尽管我无法弄清楚在哪里。

我将在此帖子的答案中发布有效的解决方案代码,以防其他人来寻找它。

0 投票
4 回答
1274 浏览

.net - EF4 生成数据库

我正在努力寻找最简单的方法来创建一个基本的“模型优先”实体框架示例。但是,我正在努力处理数据库的实际生成,特别是针对数据库运行 SQL。

工具

  • 视觉工作室 2010
  • SQL Server 2008 速成版

过程

  1. 创建一个新的类项目
  2. 将名为“Database1.mdf”的新服务器数据库项 (mdf) 添加到项目中
  3. 添加一个空的 ADO.net 实体模型
  4. 创建一个简单的实体(Person:Id,Name)
  5. 生成脚本,选择 Visual Studio 为我创建的 Database1 连接
  6. 右键单击脚本编辑器并选择“执行 SQL...”选项
  7. 登录到 SQLEXPRESS

这就是说它找不到数据库名称“Database1”的地方。

“问题”是 SQL 服务器没有附加 Database1。我 100% 肯定 Visual Studio 在创建新数据库时用于将数据库附加到 SQLExpress(步骤 2)。这似乎不再是这种情况(甚至 VS2010 的测试版也做到了)。有人可以证实这一点吗?或者告诉我如何让这发生?

有没有办法可以修改 TSQL 脚本以使用未附加的数据库。即一个文件。

我知道我可以使用 SQL Management Studio 或 sqlcmd 来附加数据库,但我最好避免使用这些解决方案,因为我希望看到只使用 Visual Studio 的最干净的方法。

理想的解决方案(按最喜欢的顺序)

  1. 获取 Visual Studio 以附加新创建的数据库
  2. 修改生成的SQL指向文件

提前致谢。

0 投票
1 回答
814 浏览

.net - 带有 SQL Server Express 文件的实体框架 4

我知道如果你在 VS2010 中以模型优先的方式使用 EF 和标准 SQL Server 数据库,那么很容易将生成的 DDL 应用到数据库。有没有一种简单的方法可以使用 .mdf 文件(SQL Server Express 文件)来做到这一点

提前致谢。

0 投票
0 回答
3988 浏览

.net - 在 EF Model First 设计中添加索引

我喜欢使用实体框架 (4) 进行模型优先设计的选项。但是,除了主键之外,我还没有找到如何向表中添加额外的索引。

这在视觉设计师中可能吗?还是需要在创建数据库后手动添加索引(这将是设计者的一个缺点)?

0 投票
2 回答
2209 浏览

c# - 代码生成 - 领域/模型优先 (DDD)

我正在寻找基于 DDD 或模型优先方法的代码生成“完整”解决方案。理想情况下,这将是一个单独的应用程序或 VS 插件,我们可以使用和重复使用它来生成尽可能多的标准管道代码,同时保留我的自定义业务逻辑。

我想生成 VS 项目,包括 WCF 服务应用程序、数据层、实体模型等和客户端应用程序,例如带有脚手架的 ASP.MVC(和/或 Web 表单)站点、Windows 客户端。

我知道有很多选择,例如 Entity Framework vs NHibernate,开源框架,例如 S#ahrp Architecture,还有商业产品。我对任何事情都持开放态度,因为我知道大部分投资都会及时到位。

更新: 补充一点:实体框架 (4.0) 向前迈出了一大步,因为它将生成 c# 业务类以及数据库模式,让您可以专注于“模型”,这很好。是否有任何东西可以更高一级以允许基于某种(元)模型生成其他对象。

0 投票
3 回答
734 浏览

c# - EF 中的模型优先与数据优先

我应该为新项目选择哪一个?我是否可以假设,数据优先模型提供更好的数据库性能,而模型优先提供更好的 OOP 处理?

0 投票
3 回答
8682 浏览

c# - 保存时如何自动更新Entity Framework 4中实体的Modified属性?

我在 VS2010、POCO 和模型优先方法中使用 EF4。

我的实体具有以下属性:Id:Guid、Name:String、Created:DateTime、Modified:DateTime、Revision:Int32。

我创建我的实体,设置名称并使用 EF4 上下文将其保存到数据库中。这应该将 Id 设置为新的 Guid(与 Identity-SGP 一起使用),Created 设置为 now,Modified 保留为 null,Revision 设置为 0。我检索实体,更改名称并再次保存。这次 Modified-value 应该设置为 now 并且 revision 应该是 1。

如何使用 EF4 和 EDMX 设计器最好地完成此任务?

更新:

这就是我最终使用的:

哪个不起作用... :(

问题是即使我显式运行 MarkAsModified() 方法,entry.State 仍然未修改。我不明白这个...

为什么默认不启用更改跟踪?我使用自我跟踪实体,为什么我要关闭它并每次都明确打开它?为什么即使状态未修改,实体也会持久化到数据库?EntityState 和 ObjectState 有什么区别?目前,我在服务器端进行所有更改和更新,但一段时间后我还将使用 WCF 服务来回传输实体......这里如何处理更改有区别吗?如果服务器端的所有更改,无论更改跟踪开/关,都保持不变?我想要的是,如果不更新 Modified、Revision 等,任何东西都不应该被存储。当对象被接收回来并发生变化时,这些属性应该始终在服务器上设置。(我不是在说 sql-server-side 而是在 service-server-side)

0 投票
2 回答
1469 浏览

.net - Model First 数据库生成器冻结了我的 Visual Studio

我是实体框架的新手,我知道这不会发生,但也许这是社区中的一个已知问题,所以我想我会问。

我用 2 个实体创建了我的模型。当我想创建数据库表时,Visual Studio 冻结了我。我自己运行了脚本,但后来我需要修改一个属性,以便它采用空值,并且我不能将我的新模型影响到数据库。

我寻找升级或任何没有运气的东西。有没有人经历过这样的事情?

0 投票
1 回答
437 浏览

.net - Entity Designer Database Generation Power Pack 为 ProviderManifestToken = 2008 生成 datetime 而不是 datetime2

我在使用“Entity Designer Database Generation Power Pack”附加组件从 EDMX 生成 DDL 时遇到问题。即使 ProviderManifestToken 设置为 2008,它也会在 datetime2 上生成日期时间列。可以修复吗?我不想一直手动执行此操作,因为我使用的是模型优先方法......

0 投票
2 回答
1873 浏览

.net - 如何将表前缀添加到在 EF4 中首先使用模型创建的表?

我的客户有一个 db 表命名约定,要求我为所有表添加一个特定于应用程序的前缀 - 例如“myapp_” - 我正在使用 EF4 和模型优先方法。

我可以指定一个自定义 db 命名空间,但他们不想为这个应用程序引入一个新的命名空间——他们的其他应用程序都没有使用 dbo 以外的命名空间。

我走上了自定义 t4 模板的道路,但我无法指定工作流在生成 EF 在运行时需要的 3 个元数据文件时应该使用哪些 t4 模板。

是否有使用 EF 完成表前缀要求的首选方法?