问题标签 [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.

0 投票
1 回答
1678 浏览

entity-framework - 如何在 Fluent EF 中一对一地建模一种方式?

假设我有以下实体:

定义 BoxMap 的正确方法是什么?这足够了吗?还是我需要WithRequiredPrincipal(我不知道那是做什么的):

注意:欢迎任何关于学习 fluent api 的好资源。谢谢。

0 投票
2 回答
3782 浏览

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 没有跟踪我从自己的存储库中获取的帐户,因此认为将其作为新实体插入是明智的。这是通过在存储库中注入相同的上下文来解决的,因此项目跟踪可以按预期工作。再次感谢您的帮助。

0 投票
2 回答
20328 浏览

c# - HasForeignKey 一对零或一

我有两个模型:

我想使用流利的映射来映射它们。Employee 表的“person_id”列不可为空。我试过以下:

但它失败了:

System.Data.Entity.ModelConfiguration.ModelValidationException :在模型生成期间检测到一个或多个验证错误:

person_id:名称:类型中的每个属性名称必须是唯一的。属性名称“person_id”已定义。

我自己需要 PersonId 属性,所以我基本上想要的是:

但是这里没有HasForeignKey这样的方法

0 投票
0 回答
114 浏览

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,而是留下已擦除的实体。

0 投票
1 回答
120 浏览

c# - 如何使用流利的 api 使用自定义列名创建另一个表的可选外键?

我正在使用 Entity Framework 5,并且我正在编写我希望在现有数据库模式之上使用的代码优先模型。所以,我无法控制架构设计。

我有两张桌子,mattersusers。该users表包含用户帐户 - 系统的实际用户。该matters表包含类似于预定约会或类似性质的数据。

该表在名为 的列中matters具有指向 的外键。这一列只是说“嘿,这一行指定了这个。” 这是一个可选的键 - 事情不必有一个经理。usersmanagerusersmanagermatter

中的记录模型users不需要映射回这些事务的属性。

我当前的映射尝试如下所示:

有了这个,我想说Matter在模型的属性上有一个可选的 FK,ProjectManager并且用户必须存在,并且表中的列名matters被称为project_manager.

虽然这不起作用,并且生成的 SQL 不正确,但我无法弄清楚如何获得我正在寻找的东西。如果我要编写 SQL,它看起来像这样

0 投票
1 回答
3394 浏览

entity-framework - 是否有使用 Fluent API 的 C# EF6 DbContext 生成器?

我知道用于 Visual Studio 2012 的 EF6 VS 工具带有一个 T4 模板来生成与 EF6 一起使用的 DbContext 类。

但我想要一个使用流利 API 的生成器。我与EF4EF5一起使用的旧版本不适用于 EF6,并且作者不再对它们进行处理以使其与 EF6 兼容。

是否还有其他人在使用与 EF6 配合使用的 Fluent API 的生成器?

0 投票
0 回答
299 浏览

entity-framework - 实体框架,代码优先,违反多重性约束

我试图让一个用户类包含书籍列表和可选的最喜欢的书籍。在下面调用 SaveChanges() 时,我收到错误消息

对数据库的更改已成功提交,但在更新对象上下文时出错。ObjectContext 可能处于不一致的状态。内部异常消息:违反多重性约束。关系 'ConsoleApplication1.User_FavoriteBook' 的角色 'User_FavoriteBook_Target' 具有多重性 1 或 0..1。"}

我想要完成的是让 User 表有一个列来存储最喜欢的书的 Id。我怎样才能做到这一点?

主程序:

0 投票
1 回答
105 浏览

c# - 如果我有一个非标准外键名称,是否需要手动设置关系的双方?

我正在做一个 Database First 项目,我正在使用一个EntityTypeConfiguration类来设置我的模型的 Fluent 定义(使用“逆向工程师代码优先”工具来获取初始类)。

在我的一组类中,我有一个非标准键 n,它以一对多的关系关联两个对象。这是一组示例类。

当我创建时EntityTypeConfiguration<Foo>EntityTypeConfiguration<Bar>我是否需要从双方定义关系,或者我可以只从一侧进行,而另一侧会接手?

0 投票
2 回答
125 浏览

c# - 为什么 MS EF v6 Fluent API 不使用 EntityClient?

我是Entity Framework的新手,刚刚读过 Lerman 的 EF 书。不幸的是,它仅涵盖EF v4。我正在查看EF v6中的Fluent API,它似乎更好且更易于使用。

不幸的是,EF v6中的Fluent API似乎正在使用而不是- 至少来自连接字符串提供程序名称。这是为什么?这是否意味着我们不能将它与 Oracle 或任何其他非 MS 数据库一起使用?SqlClientEntityClient

0 投票
0 回答
209 浏览

c# - 用实体框架中的查找表表示多对多关系

我有一个具有多对多关系的 SQL 数据库(它没有被规范化并且没有主键,只有我无法更改架构的索引)。

预订可以有很多客户,反之亦然。Reservation 表以 ReservationID 和 TransactionLineNumber 为键。Customer 表以 IPCode 作为其键。

有一个用于创建这种关系的查找表,它只有三个键,没有别的。

下面是我的 DbContext 配置代码:

以下是每个类的片段及其实体配置:

顾客

预订

现在的问题/问题

在运行时,我试图获取预订列表以及预订中的每个相关客户。运行以下示例代码:

在第二个 First() 调用中引发异常,因为 LinkedCustomers 没有项目。 查看我要连接的数据库,此客户列表中应该有一个条目。

关于我的配置可能不好的任何指示?