问题标签 [navigation-properties]
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-4 - 首先在实体框架代码中使用导航属性
语境:
- 代码优先,实体框架 4.3.1;
- 用户----主题,1对多关系;
User
带有public virtual ICollection<Topic> CreatedTopics
导航属性(延迟加载);Topic
带有public virtual User Creator
导航属性;DataServiceController : DbDataController<DefaultDbContext>
, Web API beta, ASP.NET MVC 4 Beta , 单页应用程序;- System.Json 用于 Json 序列化;
Web API 操作:
/li>结果:“w3wp.exe 中出现未处理的 microsoft .net 框架异常”
这里的问题似乎是:我不应该在两个实体中添加导航属性(导致循环引用?),如果我删除类中的CreatedTopics
导航属性User
,它会再次正常。
因此,在上面列出的类似上下文中,这是我的问题:
- 1对多关系的情况下如何处理Navigation Properties ;
- 此外,多对多关系怎么样,我必须将它分成两个1 对多关系吗?
- 使用导航属性的最佳实践和注意事项是什么?
我已经阅读了许多相关的帖子,但仍然不够清楚:(,
谢谢你的帮助!
院长
c# - 在 EF 中引用导航属性的父表
我基本上有三张带 FK 的桌子
制作
- MakeId
- 品牌名称
模型
- 型号 ID
- 型号名称
- 制造商 (FK)
车辆
- 车辆编号
- 购买日期
- 型号 ID (FK)
我想要一个从 Vehicle 到 Make 的导航属性而不修改我的数据库
我试过了:
但是,当我这样做时,我收到了一个异常:
属性表达式 'd => d.Model.MakeId' 无效。该表达式应表示一个属性:C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'。指定多个属性时使用匿名类型:C#: 't => new { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New From { t.MyProperty1, t.MyProperty2 }'。
如何在我的 Make & Vehicle 表上创建导航属性而不将 Vehicle.ModelId 列添加到我的数据库?
c# - 为什么日期时间会阻止导航属性被加载?
我正在对 SQL Server 2012 数据库使用实体框架 4.3.1,并使用 DbContext POCO 方法。
我在数据库中只有两个表,它们看起来像这样:
注意:数据库中根本没有指定外键 - 我只是在模型中强制执行关系(我无法更改数据库)。
它们每个都有一行数据,如下所示:
我执行了以下查询以确保连接有效:
现在,我有以下实体:
这是上下文:
当我运行这段代码时,我会Why is this printed?
打印到我的控制台 - 我不希望你可以看到应该填写导航属性(我什至明确包含它):
现在,这真的很奇怪:如果我只是从类中注释掉该DeliveryDate
属性,One
它就可以正常工作(我会This is what I expect
打印到控制台)。
这里有什么问题,我该如何解决?
注意:如果我查看变量DeliveryDate
上的属性,one
它已正确设置为预期值,因此数据库中的日期必须是正确的,并且实体框架完全能够实现它。
更多信息: 它是一个日期这一事实并不重要 - 如果是这样,说一个 nvarchar 它仍然失败 - 似乎任何简单的属性都会导致整个事情崩溃 - 这对我来说就像一个错误......
entity-framework - EF Code First - 指向另一个表的多个属性
我有一对简单的类在 EF 4.1 的 Code First 中生成数据库:
在我的程序中,我创建并向其写入一些数据。
请注意,当我读回购买记录时,我得到了 purchase.User 为空的异常——也就是说,.Include 没有为用户提取任何内容。现在,如果我忽略我的 OnModelCreating 中的 salespersonUser 导航属性(或者只是将其注释掉):
该代码有效,并且用户加载到 .Include 中。
当 SalespersonUser nav 属性被忽略时,创建的数据库看起来与您期望的一样。Purchase 表有PurchaseId、UserId 和SalespersonId。但是,一旦您重新添加 SalespersonUser nav 属性(停止忽略它),您最终会在表中得到另外两个键:User_UserId 和 SalespersonUser_UserId(以及原始的 UserId 和 SalespersonUserId)。
此外,生成的 SQL 明确显示了问题所在。
没有导航属性:
并使用 nav 属性:
请注意它是如何提取 UserId,但与 User_UserId 连接的,以及左连接。SalespersonUserId 甚至没有在联接中引用。写入记录后在数据库内部设置了UserId,但User_UserID为空。因此,没有什么可加入的,我们为包含的用户获得 null。
在我看来,这是 EF 中的一个错误,但它可能有设计原因。如果是这样,有人可以为我清理一下,也许可以描述一些可以解决它的流畅的 API 吗?我有点偏爱我的导航属性。
c# - 实体框架 - 为什么选择导航属性?
我有一个看起来像这样的基本存储库:
User user = _usersRepository.Get().SingleOrDefault(u => u.Username == "gigi");
这将返回没有 Roles 属性的用户,这没关系。User user = _usersRepository.Get(new string[] { "Roles" }).SingleOrDefault(u => u.Username == "gigi");
这将返回用户和 Roles 属性,这没关系。List<User> users = _usersRepository.Get().Where(u => u.Username.StartsWith("gi")).ToList();
List<User> users = _usersRepository.Get(new string[] { "Roles" }).Where(u => u.Username.StartsWith("gi")).ToList();
查询 3 和 4 都返回具有 Roles 属性的用户列表。为什么查询 3 返回角色?
LE:这是调用,我在上下文处理后检查用户集合。
LE2:我分别做了同样的事情:
- /li>
- /li>
在第一种情况下,没有加载角色,在第二种情况下,它们是可以的。
我没有看到我在存储库示例中做错了什么。
LE3:这是工作单元
entity-framework-5 - 忽略 OnModelCreating 中的属性
我正在尝试在 Entity Framework 5.0 中使用有界 (Db) 上下文,但在从特定上下文中包含的类之一中排除属性时遇到问题。这是信息(为简洁起见,我将缩短)
BaseContext.cs
IContext.cs
ISuiteContext.cs
SuiteContext.cs
组织.cs:
组织配置.cs:
我如何使用(Web API 测试项目)
以及正在发生的异常:
导航属性“颜色”不是“组织”类型上声明的属性类型。验证它没有从模型中排除,并且它是一个有效的导航属性
我想要的只是让“SuiteContext”能够访问组织,但不能访问子项(颜色和其他一些)
我错过了什么?也许我错误地解释了异常?
更新#1
我试过(没有成功 - 同样的例外):
更新#2
我似乎与OrganizationsConfiguration.cs
类和HasMany()
方法有关。如果我取出HasMany(o => o.Colors)
,那么我可以按照我的意图忽略类/属性。但是,这也会导致数据库创建在重新创建时失败。如果我这样做该死,如果我不这样做该死!
entity-framework - 在 ADO.NET 实体框架中保存导航属性
我正在使用 ADO.NET 实体框架。我使用以下代码在数据库中添加了一个“用户”实体:
'user' 类的 CF 属性是 'people' 类属性的外键。数据库表 'people' 有一条 CF='xyz' 的记录。当方法'dbEntity.SaveChanges();' 执行时,在“用户”数据库表中创建新记录没有问题。问题是导航属性“new_user.people”为“null”,即使在执行“dbEntity.SaveChanges();”之后也是如此。正常吗?
谢谢!
asp.net-mvc - How to join ef navigation properties in linq to entities
I try to get the following sql written in Linq to Entities:
Here is my attempt in Linq:
The SheetCollection model:
My diagram looks like this:
I understand that it doesn't work out to equal with a navigation property. But how should this be done in a correct way?
entity-framework - 实体框架 POCO - 导航属性不刷新
我对 EF 4 中的 poco 类有疑问。
我有一个 Order 实体,其中包含一个 Customer 实体的外键。
因此,Order 类具有 Customer 类型的导航属性。
它看起来像这样:
当我加载订单时,导航属性 customer 是正确的,但如果 CustomerId 属性发生更改,导航属性不会随着新客户刷新。
如果我在 EF 上下文中调用 DetectChanges() 方法,则会刷新导航属性。
我读过所有属性都标记为虚拟,关系同步是自动的,但这里不是这种情况。
我哪里做错了 ?
谢谢你的帮助
.net - .NET Entity Framework 如何添加导航属性
我已经使用实体框架创建了数据库模型,该模型在收件人和邮件列表之间具有多对多的关系。当我生成数据库时,它没有让我访问链接表,而只是访问收件人中的属性-recipient.mailingList。我尝试将新收件人添加到数据库并创建新收件人,正确添加了所有属性。检查并有效。但是当我将 MailingList 添加到收件人时,它给了我错误:“英文翻译:IEntityChangeTracker 的多个实例无法引用实体对象。”。我添加了 MailingList 如下。
在出错之前,我可以看到 newRecipient 添加了 mailingLists。在我尝试分配 MailingList 之前,程序添加了 newRecipient 没有问题。谁能告诉我如何将邮件列表添加到收件人?