问题标签 [entity-framework-mapping]
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 - 首先使用 EF 代码审核表
我有一堂课说Message
如下:
现在我想保留 Message 对象的状态,例如用户将其标记为已读以及何时。我创建了一个类MessageStatusHistory
,如:
我对如何设置Message
和类的映射感到困惑,以便我可以从对象本身MessageStatusHistory
获取 a 的所有历史记录。Message
此外,在某些用户将其标记为已读之前,状态历史表不会有条目。
编辑:2我配置映射Message
如下:
对于MessageStatusHistory
映射是:
现在,当我运行以下测试时:
创建状态历史对象的行是重新插入Message
对象:(我认为这是因为HasRequired(x=>x.Message)
映射中的东西。但不确定。请帮助解决这个问题。
c# - 覆盖 DbContext SaveChanges
我使用 EF 4.3.1 我需要在保存时添加实体的默认值。
目前我正在使用 SaveChanges() 并且它有效。
从我使用的代码中可以看出,ChangeTracker.Entries<Option>()
其中Option
rappresent 是一个特定的 DataType。
我想知道是否可能以及如何编写更通用的 ChangeTracker.Entries 版本,ChangeTracker.Entries<t>()
以便它可以检查我的模型中的所有类型的实体,正如您在我的特定案例中看到的那样,我在许多类上都有一个 NoteInternal 属性
谢谢你的帮助!
PS:在这里使用 DYNAMIC 数据类型有意义吗?
c# - 更改 mvc3 中的 c# 删除功能以确保安全
我在 CMS 中有一个基本的 CRUD,使用 EF 并且首先使用数据库完成,删除功能只是从数据库中删除记录。
以下是删除的控制器代码:
现在从客户的角度来看,出于安全原因,我不想实际从数据库表中删除条目,我只想更改数据库中的一个值,即“已删除,从“N”到“Y”,然后我将隐藏它,则不会通过自定义查询显示值为“Y”的条目。如果这是有道理的。我的问题是如何更改此代码以不删除,而只是更改该值。
我觉得它看起来像:
但我不确定在哪里定义它只有一个将被修改的值,在这种情况下是“已删除”值。也许还说它应该只返回视图一个值为“N”的条目
sql-server - 使用 aspnet 架构和 UserRepository/EF ASPNET MVC 4 创建用户
我有一个关于在我的 bd 中创建用户的问题。我使用 userRepository 在 aspnet 模式中创建用户。
所以为了创建一个用户,我必须在 aspnet_user 和 aspnet_membership 表中创建一行
userId 是一个身份密钥,所以是我的 bdd 管理这个......所以现在,我的 UserRepository 类中有这个代码:
但是,我不认为这是使用 aspnet_User 和 aspnet_Membership 之间的外键创建用户的好方法......在这里,我有一个唯一的用户名,但如果不是,我不知道我会怎么做完毕 ...
有人可以帮助我吗?感谢您的帮助
entity-framework - 如何在实体框架中禁用属性的自动映射
我决定在实体框架中使用流畅的映射。我的意图是通过没有任何属性和自动映射功能的代码映射所有内容。我发现的最好方法是类 EntityTypeConfiguration,我为项目中的每个实体实现了它。
后来我将属性添加到我的一个实体。这个属性不需要被持久化。我已经预料到,在我为这个属性添加映射之前,它会被数据库和持久层忽略。不幸的是,它不是那样工作的,并且属性是映射的。唯一的方法是使用 Ignore 方法或 NotMapped 属性,但我不想明确地这样做。
有什么办法可以阻止实体框架自动映射?我试图从 DbModelBuilder 中删除所有约定,但它没有帮助。
entity-framework - 实体框架调优
遇到问题,希望有人可以提供帮助。
这是我在现实世界中的例子。我有 4 个表格:
Person
Plan
Coverage 和 CoveredMembers
每个人可以有很多计划,每个计划都可以有很多承保范围。这些coverage 中的每一个都可以有许多 CoveredMember。
我需要一个查询,它将对 Plan.PlanType == 1 和 CoveredMembers.TermDate == null 应用过滤器。此查询应带回任何具有未终止医疗类型计划的人。但我还需要包括所有的子记录。符合筛选条件的每个人,以及他们的计划、承保范围和受保成员。
这条 SQL 语句就是这样做的:
在 EF (4.0 vs 2010) 我已经做到了
然后
如果我在 var people = Q 行上设置断点并执行
在使用 ToList() 将查询实际发送到数据库之前(在包含语句之前),我接受该查询并取回我应该取回的确切记录数量。
然后我运行一个 sql 跟踪(在 SQL Profiler 中)并将查询发送到数据库(包含语句)。我看到发送到数据库的 sql 语句已经失去了所有的过滤。它基本上返回相同的人,但子对象上的过滤器消失了,正在返回这些人的所有数据。(缺少 plan.PlanType = 1 和coveredMember.TermDate = null)
也许这不是实现这一目标的方法?有人有什么想法吗?EF甚至可以吗?这是一个非常简单的 SQL 语句(尽管跨越 4 个表),所以我认为这应该不是什么大问题,尽管我确定我没有正确地做某事
entity-framework - 实体框架建模 - 如何建模这个简单的数据结构?
这是一个相对简单的数据结构,但我很难找出最佳的 EF 策略来对其进行建模。这显然不是 Table Per Hierarchy。所以我尝试了每个类型的表,它不喜欢客户和个人或客户和个人之间的关系。在阅读了每个具体类型的表之后,它也不遵循该模型。S 如何为这个 ERD 建模?
#更新
#它背后的业务用例是我们与几家公司打交道。其中一些公司收购了其他公司。母公司 (Acme) 是长期客户。子公司(Zeta)是长期客户。当 Acme 收购 Zeta 时,他们指定了一名负责处理公司之间关系的人(Adam)。Adam 现在有 2 个不同的电子邮件地址需要收到事件通知。adam@acme.com 接收客户通知。adam@zeta.com 获取客户端通知。这就是我让它像原来那样建模的原因。Adam 有点强迫症,喜欢将他的通知分开到单独的邮箱中。作为一个程序员,我不喜欢 Adam。:D
除了客户和客户之外,系统中还有其他几个分类。我们还有供应商、技术人员和分销商。我最终将它建模为与以下建议非常相似,但将电子邮件表拆分为特定类型的表(CustomerEmail 和 ClientEmail)。不完美,但为了“完成它”,它可以工作。
.net - 违反多重性约束的原因是什么。
我有一个 A 类,它有另一个 B 类的列表
尽管所有其他文章都告诉 B 类也可能包含 A 类的对象,但事实并非如此。当我填充数据并尝试保存时,关系'A_PointCollection'的角色'A_PointCollection_Source'具有多重性1或0..1。抛出异常。.注意我不是在定义关系,而是让实体框架自己定义。所以,请提出可能的解决方案
performance - 预编译的视图不起作用
我试图使用预编译的视图来获得良好的性能,我成功地生成了视图,并且在编译时和运行时 .edmx 中的一切都是相同的。早些时候,默认连接工厂的数据提供程序存在错误,.edmx 总是将 SqlClient 提供程序用于默认连接工厂,即使您将默认连接工厂更改为其他数据提供程序,但是当我注释掉类的构造函数时,这种情况得到了克服继承 DbContext,在 .edmx 文件中的此连接提供者与我在 app.config 中的默认连接工厂中指定的相同之后。因此,在编译时生成的 .Edmx 和运行时 .edmx 中的一切都是相同的。
但是当我在编译时生成视图并使用视图来优化性能时,当我调用 dbcontext.SaveChanges() 时会引发以下异常
“EntityContainer 'DatabaseContext' 的映射和元数据信息不再匹配用于创建预生成视图的信息。”
上述异常表明存在一些不匹配,但我检查了 edmx,一切都一样。所以是什么问题。或者我经历过这个
因为它暗示了不同的装配问题。因此,对于我的情况,我有一个 project1,它有几个 POCO 类和不同的 project2,它引用 project1 并使用 project1 的 POCO 类,并且 DbContext 类已经在 project2 中定义,我正在为 project2 生成视图,那么到底是什么问题在此先感谢您的帮助
c# - EntityFramework 5 Code First 多重继承映射 (TPC)
好吧,可能这个问题之前已经回答过,但我一直在研究,我只是找不到解决我的具体问题的方法
此示例的代码 - Visual Studio 2012 - 控制台应用程序
所以我有一个具有多个继承对象的 EntityFramework Code First 模型。我创建了这个代表我的问题的例子:
模型
语境
我想使用TPC (Table Per Concrete Type) 映射
运行迁移并更新我的数据库后,结果如下:
这是我的期望。到目前为止,一切都很好。
但是后来.......我决定像这样Gender
向我的类添加一个对象和一个属性Person
:(这不是我的真实模型,它只是一个示例)
应用迁移并更新数据库后,这是数据库模型:
为什么?
我错过了什么?我只希望 EF 在我的继承层次结构中映射我的引用属性。我期望该表包含一个完全一样ExecutiveEmployees
的外键和Genders
Employees
Genders
我在我的MyContext.OnModelCreating
:
但是当我尝试添加迁移时,我收到了这个错误:
无法映射类型“ExecutiveEmployee”上的属性“Gender”,因为它已从模型中显式排除,或者它属于正在使用的 DbModelBuilderVersion 不支持的类型。