问题标签 [entity-framework-5]
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.
entity-framework - 检查是否有任何待保存的更改要保存
有没有办法在实体框架中找出我的实体上下文中是否有未保存的更改?
entity-framework - EF 代码优先:如何加载相关数据(父子孙子)?
我有这个实体:
该实体可能有 3 个级别:父级 -> 子级 -> 孙子级。如何加载父级(级别 1)和所有关联的子级(级别 2)以及每个子级、关联的孙子级(级别 3)(如果有)?感谢帮助。
c# - 无法在类库中为实体框架启用迁移
我刚刚加入 EF 5 并正在使用他们的代码优先迁移工具,但是当我尝试启用迁移时似乎遇到了错误。
我输入Enable-Migrations
包管理器控制台,然后它说
在当前项目中找不到派生自 DbContext 的类。
编辑生成的配置类以指定启用迁移的上下文。
为项目 MyApp.MvcUI 启用了 Code First 迁移。
然后它会在我的 MvcUI 项目中创建一个 Migrations 文件夹和一个配置类。问题是,我的 DbContext 位于一个名为 MyApp.Domain 的类库项目中。它应该在该项目中完成所有这些工作,并且找到我的 DbContext 应该没有问题。
c# - EF5 Beta1 日期时间比较
我正在通过使用随机数量的刻度来生成一些日期测试数据,但是我输入的日期似乎比我返回的日期具有更高的精度。这是 EF5 的问题,还是与 DateTime 与 DateTime2 列类型有关。
例如
我生成时间的刻度:634074312268196992
通过 EF 存储/检索该时间的刻度:634074312268200000
entity-framework - 术语“更新数据库”未被识别为 cmdlet 的名称
我正在使用 EF5 beta1,虽然我之前能够运行“更新数据库”。现在我关闭了 Visual Studio,我无法让它运行。我收到以下错误:
术语“更新数据库”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 line:1 char:16 + Update-Database <<<< -verbose + CategoryInfo : ObjectNotFound: (Update-Database:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
我尝试重新安装 EF5b1,虽然成功(已安装),但“更新数据库”仍然无法正常工作。
谁能帮忙???
entity-framework - 保存后我的集合/模型看起来很好,但是在加载实体时我没有取回数据。我究竟做错了什么?
这是我的模型的源代码:
这是我的实体类:
最后是我在测试控制台应用程序中运行的代码:
一旦模型被保存(CreateUser),我就可以浏览模型,一切看起来都很完美。
当我尝试将数据拉回时,就会出现问题。
我的变量:
a -- 导航到电子邮件地址显示 0 条记录。
b - 这也显示集合中的 0 条记录。
c -- 导航到电子邮件地址显示 0 条记录。
d -- 在这里我可以获得电子邮件地址(但不能通过导航模型)
entity-framework - 谁能告诉我如何修复我的模型(使用 FluentAPI),以便我可以为我的 User.FriendCollection 分配不同的用户?
我是 CodeFirst 的新手,我正在尝试创建一个 Friends Collection,以便两个用户可以在他们的 Friends Collection 中拥有彼此。
这是我的用户类:
这是我的朋友班:
这是我的实体类:
这是我的控制台代码,理想情况下是我想要实现的:
每当我尝试使用 User 对象填充 Friend 类时,SaveChanges 都会引发错误:
违反了多重性约束。关系“Entities.Friend_User”的角色“Friend_User_Target”具有多重性 1 或 0..1。
如果我像这样分配给 UserID:
u1.FriendCollection.Add(new Friend { UserID = u2.ID });
这允许我保存实体,但不正确!
当我单步执行代码时,我可以隔离问题,这就是我发现的:
因此,如果我将 Friend.User 分配给调用用户,现在我可以回到我之前的示例和 SaveChanges() 而不会引发错误。例如:
但是当我尝试分配不同的用户时,我得到了错误。例如:
我得到:
违反了多重性约束。关系“Entities.Friend_User”的角色“Friend_User_Target”具有多重性 1 或 0..1。
谁能告诉我如何修复我的模型(使用 FluentAPI),以便我可以为我的 User.FriendCollection 分配不同的用户?
sql-server - 如何使用实体框架在 SQL Server 中计算列值
我习惯于使用身份列并为我生成 pk。我想知道,有没有办法确定身份列的范围或以其他方式计算它在外键中是唯一的?
例如,使用标识列,表可能如下所示:
如果我想实现更像以下的东西怎么办:
我知道 EF 允许使用数据库生成的列值,例如标识和计算。我的问题是,如何实现这样的计算列?
我意识到它可以在应用程序中完成,方法是找到用户拥有的最高 WidgetId 并递增一。但这感觉不是正确的方法。
我想也可以使用触发器来执行此操作,但是从 db 中添加触发器DbContext
会依赖于 RDBMS,对吧?
有没有更好的方法,可以减少对使用哪个后端 EF 的依赖?
更新
更清楚地说,在上面的模型中,Widget 和 User 之间是有目的的识别关系。UserId 是 User 表的主键,通过将 FK to User 作为 Widget PK 的一部分,这意味着 Widget 永远不会在用户之间共享。当一个用户被删除时,所有的小部件都会被删除。单独通过 WidgetId 查询 Widget 是没有意义的;要查询特定的 Widget,UserId 和 WidgetId 参数都是必需的。
我正在探索这个,因为我记得在 Evans DDD 中读到聚合中的非根实体 id 只需要在聚合中是唯一的。上面是这种情况的一个例子:
根以外的实体具有本地标识,但该标识只需要在 AGGREGATE 内是可区分的,因为没有任何外部对象可以从根实体的上下文中看到它。(领域驱动设计,埃文斯)
更新 2
在 Gorgan 的回答之后,我在我的小部件工厂类中实现了以下内容。这是实现上述所需结果的正确方法吗?
小部件
我想我不应该掩饰这个词。实际的实体是 WorkPlace。我正在开发一个应用程序来跟踪我一年中的工作地点,因为我必须每年提交一份行程表和我的市政退税表。完成后,我计划将其发布到云端,以便其他人可以免费使用。但我当然希望他们的工作场所与我的完全隔离。
使用匿名身份自动为每个访问者创建用户/ Request.AnonymousID
(稍后会有注册功能,但没有必要尝试演示)。Web 应用程序将具有诸如 /work-places/1、/work-places/2 等的静态 url。因为每个请求都保证有一个用户,所以不需要在 url 中标识用户 ID。Request.AnonymousID
我可以从User.Identity.Name
.
如果 WorkPlaceId 是一个身份列,我的控制器操作首先需要检查以确保用户在显示工作场所之前拥有它。否则,我可以破解 URL 以查看每个用户在系统中设置的每个 WorkPlace。通过使 WorkPlaceId 仅对用户唯一,我不必担心。URL /work-places/1 将向 2 个不同的用户显示完全不同的数据。
c# - 搜索空值时,EF 中的 LINQ 失败?
我有以下代码。
此单元测试失败,因为 story.StartSegment 实际上为 null,但鉴于 FirstOrDefault lambda 表达式明确搜索起始段不为 null的故事,我认为这没有任何意义。
谁能帮我?
c# - 在 Code First 和实体框架 5 中使用枚举
只是想确认一个印象:似乎 EF5 + Code First 中的枚举仅在与使用它们作为属性类型的类相同的命名空间中声明时才受支持。
谁能证实这一点?在网上找不到任何关于这个的...