问题标签 [fluent-entity-framework]
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 - 如何在 Fluent EF 中一对一地建模一种方式?
假设我有以下实体:
定义 BoxMap 的正确方法是什么?这足够了吗?还是我需要WithRequiredPrincipal
(我不知道那是做什么的):
注意:欢迎任何关于学习 fluent api 的好资源。谢谢。
c# - EF HasOptional WithMany
我有一个我无法通过谷歌或在 stackoverflow 上搜索解决的问题。
我有两个表 JournalLines 和 Accounts,我想在日记中引用一个帐户(我讨厌经济学),但引用必须是可选的,并且 Account 不应该对 JournalLine 具有任何导航属性(理想情况下)。
期刊专线:
_帐户:
以及各自的映射:
我得到的错误是:
在模型生成期间检测到一个或多个验证错误:
tSystem.Data.Entity.Edm.EdmAssociationType::多重性与关系“JournalLine_Account”中角色“JournalLine_Account_Target”中的引用>约束冲突。>因为从属角色中的所有属性都不可为空,所以 >Principal Role 的多重性必须为“1”。
这让我很困惑,我希望有人能阐明这个问题。
更新
感谢您在路上帮助我的答案,我通过移除钥匙获得了工作关系。然后,在创建重复帐户时,我得到Account
了一个奇怪的行为。JournalLine
事实证明,这并不是那么奇怪的行为,因为我使用了带有依赖注入的存储库模式。我没有想到的是两个存储库中的上下文并不相同,因此 JournalLinesRepository 没有跟踪我从自己的存储库中获取的帐户,因此认为将其作为新实体插入是明智的。这是通过在存储库中注入相同的上下文来解决的,因此项目跟踪可以按预期工作。再次感谢您的帮助。
c# - HasForeignKey 一对零或一
我有两个模型:
我想使用流利的映射来映射它们。Employee 表的“person_id”列不可为空。我试过以下:
但它失败了:
System.Data.Entity.ModelConfiguration.ModelValidationException :在模型生成期间检测到一个或多个验证错误:
person_id:名称:类型中的每个属性名称必须是唯一的。属性名称“person_id”已定义。
我自己需要 PersonId 属性,所以我基本上想要的是:
但是这里没有HasForeignKey这样的方法
entity-framework - Entity Framework 5 Fluent 映射嵌套“多对多”到“多对多”级联
我们有以下案例:
我们正在尝试在 EF 中使用 fluent 进行映射,以便在删除 RoleUser 时,通过级联删除所有 UserRoleCollection。EF 模型中不存在 RoleUser 类,因为它是用户和角色之间的多对多。
我们的对象模型是这样定义的:
用户 - RoleList
用户 - UserRoleConnectionList
角色 - UserList
角色 - UserRoleConnectionList
UserRoleConnection - UserList
UserRoleConnection - RoleList
UserRoleConnection - ConnectionList
Connection - UserRoleConnectionList
当我们从用户中删除角色时,应该删除 RoleUser 以及 UserRoleConnections。目前,它之所以有效,是因为数据库具有 ON CASCADE DELETE,但 EF 并未从数据上下文中删除 UserRoleConnection,而是留下已擦除的实体。
c# - 如何使用流利的 api 使用自定义列名创建另一个表的可选外键?
我正在使用 Entity Framework 5,并且我正在编写我希望在现有数据库模式之上使用的代码优先模型。所以,我无法控制架构设计。
我有两张桌子,matters
和users
。该users
表包含用户帐户 - 系统的实际用户。该matters
表包含类似于预定约会或类似性质的数据。
该表在名为 的列中matters
具有指向 的外键。这一列只是说“嘿,这一行指定了这个。” 这是一个可选的键 - 事情不必有一个经理。users
manager
users
manager
matter
中的记录模型users
不需要映射回这些事务的属性。
我当前的映射尝试如下所示:
有了这个,我想说Matter
在模型的属性上有一个可选的 FK,ProjectManager
并且用户必须存在,并且表中的列名matters
被称为project_manager
.
虽然这不起作用,并且生成的 SQL 不正确,但我无法弄清楚如何获得我正在寻找的东西。如果我要编写 SQL,它看起来像这样
entity-framework - 实体框架,代码优先,违反多重性约束
我试图让一个用户类包含书籍列表和可选的最喜欢的书籍。在下面调用 SaveChanges() 时,我收到错误消息
对数据库的更改已成功提交,但在更新对象上下文时出错。ObjectContext 可能处于不一致的状态。内部异常消息:违反多重性约束。关系 'ConsoleApplication1.User_FavoriteBook' 的角色 'User_FavoriteBook_Target' 具有多重性 1 或 0..1。"}
我想要完成的是让 User 表有一个列来存储最喜欢的书的 Id。我怎样才能做到这一点?
主程序:
c# - 如果我有一个非标准外键名称,是否需要手动设置关系的双方?
我正在做一个 Database First 项目,我正在使用一个EntityTypeConfiguration
类来设置我的模型的 Fluent 定义(使用“逆向工程师代码优先”工具来获取初始类)。
在我的一组类中,我有一个非标准键 n,它以一对多的关系关联两个对象。这是一组示例类。
当我创建时EntityTypeConfiguration<Foo>
,EntityTypeConfiguration<Bar>
我是否需要从双方定义关系,或者我可以只从一侧进行,而另一侧会接手?
c# - 为什么 MS EF v6 Fluent API 不使用 EntityClient?
我是Entity Framework的新手,刚刚读过 Lerman 的 EF 书。不幸的是,它仅涵盖EF v4。我正在查看EF v6中的Fluent API,它似乎更好且更易于使用。
不幸的是,EF v6中的Fluent API似乎正在使用而不是- 至少来自连接字符串(提供程序名称)。这是为什么?这是否意味着我们不能将它与 Oracle 或任何其他非 MS 数据库一起使用?SqlClient
EntityClient
c# - 用实体框架中的查找表表示多对多关系
我有一个具有多对多关系的 SQL 数据库(它没有被规范化并且没有主键,只有我无法更改架构的索引)。
预订可以有很多客户,反之亦然。Reservation 表以 ReservationID 和 TransactionLineNumber 为键。Customer 表以 IPCode 作为其键。
有一个用于创建这种关系的查找表,它只有三个键,没有别的。
下面是我的 DbContext 配置代码:
以下是每个类的片段及其实体配置:
顾客
预订
现在的问题/问题
在运行时,我试图获取预订列表以及预订中的每个相关客户。运行以下示例代码:
在第二个 First() 调用中引发异常,因为 LinkedCustomers 没有项目。 查看我要连接的数据库,此客户列表中应该有一个条目。
关于我的配置可能不好的任何指示?