问题标签 [ef-model-builder]
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.
asp.net-mvc - 如何从 mvc c# 中使用 ModelBuilder 映射的表中读取数据
我有一个 Dbcontext 在它的OnModelCreating()
方法中我有这样的东西:
我想从CmsContentData_CmsKeywords
表中读取,但我想知道如何?(项目解决方案中没有CmsContentData_CmsKeywords
模型)
c# - “X 之一”对一实体关系
我在关系的一侧有三个不同的定义良好的实体,Foo
, Bar
, Baz
, 和一个单独的实体,这些都需要在另一侧绑定,我们称之为LogEntry
。就 sql 而言,我的关系有效,但我不知道如何在 中定义它DbContext
modelBuilder
并让导航道具在使用.Include()
.
要求:
LogEntry
必须与一个Foo
,Bar
, 或Baz
Foo
,Bar
, 或Baz
可能只与零或一LogEntry
有关
所需用途:
我想有一个导航属性两种方式。
.Include(x => x.LogEntry)...
检索所有Foo
, Bar
, 或Baz
s时
和
db.LogEntries.Include(x => x.Foo).Include(x => x.Bar).Include(x => x.Baz)...
我试过的:
我们使用代码优先,但我们从.sql
脚本生成表。
我尝试了几种不同的方法来定义与 的关系DbContext
ModelBuilder
,但是我尝试过的任何方法都没有在.Include()
ed 时填充 nav 道具。
第一种方法是在每个Foo
,Bar
或上放置一个可为空的 FKBaz
并在 , 或 nav 属性上放置 Lists of Foo
,Bar
或Baz
nav props LogEntry
。我们将只依靠代码永远不会添加超过一个Foo
,Bar
或。这使得实体关系变得微不足道,但与它们的使用方式不匹配,并且会导致开发人员混淆。另一个问题是我们无法对跨 、 或 表的 FK实施唯一检查。Baz
LogEntry
LogEntry
Foo
Bar
Baz
总之:
有没有办法在实体框架中定义这种关系以获得双方的工作导航属性?
c# - 更新时删除同一实体的实体列表
大家好,我找不到解决这个问题的方法,我有一个实体,它有一个像这样创建的属性DbModelBuilder
首先是一个具有属性的类,该属性RelatedFoo
是同一个 Foo 实体的列表
这是创建于DbContext
这导致迁移是这样的
一切都按预期进行,我可以执行以下操作:
并relatedFoos
保存在新表中 ( RelatedFoos
)
当我尝试删除此问题时出现问题relatedFoos
......我已经尝试过:
这不会删除“RelatedFoos”的数据,也不会分配mainFooEntity.RelatedFoo
给空List<Foo>
的数据或删除当前数据。我怎样才能删除这个List<>
?
asp.net-core - “模型构建器”不包含“ApplyAllConfigurations”的定义?
我正在关注这个 youtube视频,在34:05时,它是使用 EntityFramework Core 的 ASP.Net 核心的架构,他们正在展示一种扩展方法
我在我的代码中尝试了这个并且它抛出错误: 'ModelBuilder'不包含'ApplyAllConfigurations'的定义,并且找不到接受'ModelBuilder'类型的第一个参数的可访问扩展方法'ApplyAllConfigurations'(你是否缺少使用指令还是装配参考?
我错过了任何参考吗?如果没有,我该如何在我的项目中实现它?
c# - 我想在注册时使用 MVC 中的 EF 模型添加多个具有多对多关系的角色
我有带有角色的用户注册表,我想通过多对多 Ef 模型生成的模型注册具有多个角色的新用户。
我在注册用户时遇到问题,新角色被插入到角色表中,而这些新添加的角色被插入到 user_has_roles (Junction) 表中。
这是注册表图像
这是数据库多对多关系表图像
这是 EF 模型表图像
我正在分享一些我写的代码
自动生成的模型类 user.cs
用户角色.cs
这是我的数据库上下文类(自动生成
AccountDb.cs
这是我注册用户的控制器方法(POST)
我想注册具有多个角色的用户,并且角色已经在角色表中定义,通过多选选择,请帮帮我
当我用 1 个角色注册用户时,新角色添加到角色表中,而不是新添加的角色分配给用户(仅将 role_id 添加到角色表中),如果我分配 2 个角色而不是 2 个将添加到角色表中
注册后连接表的编辑图像
c# - 我想在注册时使用 EF 模型添加具有多对多关系的多个角色
我有带有角色的用户注册表,我想通过多对多 Ef 模型生成的模型注册具有多个角色的新用户。我在注册用户时遇到问题,新角色被插入到角色表中,而这些新添加的角色被插入到 user_has_roles (Junction) 表中。
我正在分享一些我编写的自动生成模型类 user.cs 的代码
用户角色.cs
这是我的数据库上下文类(自动生成的 AccountDb.cs
这是我注册用户的控制器方法(POST)
我想注册具有多个角色的用户,并且角色已经在角色表中定义,通过多选选择,当我注册具有 1 个角色的用户时,请帮助我,新角色添加到角色表中,而不是新添加的角色分配给用户(只有角色 ID 添加到角色表),如果我分配 2 个角色而不是 2 个将添加到角色表
asp.net - 在数据库上下文中找不到 Fluent API 模型构建器映射生成的代码
我正在使用带有实体框架 6 的 ASP.NET MVC 5。
我通过将我的模型移动到一个单独的数据项目来调整我的架构,以尝试遵循清洁架构。
通常,当我在同一个项目中拥有所有模型及其数据库上下文时,实体框架会在上下文中生成映射以反映我定义模型的方式所指示的关系(使用公共虚拟 ICollection ...等)。
当模型都在一个项目中时,来自数据库上下文的代码示例如下所示:
但是,现在我在同一个解决方案中的单独数据项目中拥有模型,数据库上下文不再有这些代码。它只有我在下面包含的这个简单的 Fluent API 代码。
当模型位于同一解决方案中的单独项目中时,上下文中的代码:
在服务器管理工作室中检查后,这些表在数据库中的生成方式与模型构建器代码的生成方式相同。
我发现这令人震惊,想知道在没有 Fluent API 的情况下如何正确生成表及其关系。我在项目中搜索了模型构建器代码,但在任何地方都找不到。
缺少此 Fluent API 代码是问题还是潜在问题?如果看起来不需要此代码来建立数据库关系,任何人都知道这是如何工作的?
c# - 如何从实体框架中存在数据模型的json中反序列化对象?
我有一个传入的 json 对象,它代表从数据库结构中提取的数据。
我想将它映射到实体框架模型,该模型具有来自属性或来自数据库上下文中的模型构建器的定义。
运行实体框架时,此数据映射正确,因此我知道模型是正确的。
因此,使用相同的结构,而不是通过 EF 调用数据库,我从一个与 entity.Property 列名称具有相同传入数据结构的 API 中提取。
如何将传入的 json 结构映射到模型对象?
属性
或者ModelBuilder
:
传入 JSON 示例:
因此,如果从数据库中提取此数据,它将自动映射到“ModelExample.PropertyToMap”和 ModelExample 代码模型。
我如何映射它?有没有办法使用实体框架流程?
更新
我知道如何使用 Newtonsoft 从 json 映射到对象。我正在尝试映射到实体而不必使用映射器。实体框架已经有了这些值,我希望只使用实体框架配合。
c# - 多对多连接表的 EF 模型
我正在尝试为连接表 OwnerCows.dbo 理顺 EF 模型。有一个带有 Id 的类 Cow,一个带有 Id 的类 Owner,我想在只有 OwnerCowId、CowId(FK) 和 OwnerId(FK) 的 OwnerCows 表中引用它们。
我得到的错误是:无法在'Owner.OwnerCows'和'OwnerCow.Owner'之间创建关系,因为'Owner.CowOwners'和'OwnerCow.Owner'之间已经存在关系。导航属性只能参与单个关系。
这是否意味着我有一个循环引用?我该如何解决这个问题?
所有者.cs:
牛.cs:
OwnerCows.cs:
上下文类:
我可以让它与这个设计一起工作吗?EFCore可以吗?还有其他建议吗?谢谢!