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

0 投票
0 回答
322 浏览

entity-framework-4 - 首先使用 EF 代码审核表

我有一堂课说Message如下:

现在我想保留 Message 对象的状态,例如用户将其标记为已读以及何时。我创建了一个类MessageStatusHistory,如:

我对如何设置Message和类的映射感到困惑,以便我可以从对象本身MessageStatusHistory获取 a 的所有历史记录。Message

此外,在某些用户将其标记为已读之前,状态历史表不会有条目。

编辑:2我配置映射Message如下:

对于MessageStatusHistory映射是:

现在,当我运行以下测试时:

创建状态历史对象的行是重新插入Message对象:(我认为这是因为HasRequired(x=>x.Message)映射中的东西。但不确定。请帮助解决这个问题。

0 投票
2 回答
2849 浏览

c# - 覆盖 DbContext SaveChanges

我使用 EF 4.3.1 我需要在保存时添加实体的默认值。

目前我正在使用 SaveChanges() 并且它有效。

从我使用的代码中可以看出,ChangeTracker.Entries<Option>()其中Optionrappresent 是一个特定的 DataType。

我想知道是否可能以及如何编写更通用的 ChangeTracker.Entries 版本,ChangeTracker.Entries<t>()以便它可以检查我的模型中的所有类型的实体,正如您在我的特定案例中看到的那样,我在许多类上都有一个 NoteInternal 属性

谢谢你的帮助!

PS:在这里使用 DYNAMIC 数据类型有意义吗?

0 投票
2 回答
670 浏览

c# - 更改 mvc3 中的 c# 删除功能以确保安全

我在 CMS 中有一个基本的 CRUD,使用 EF 并且首先使用数据库完成,删除功能只是从数据库中删除记录。

以下是删除的控制器代码:

现在从客户的角度来看,出于安全原因,我不想实际从数据库表中删除条目,我只想更改数据库中的一个值,即“已删除,从“N”到“Y”,然后我将隐藏它,则不会通过自定义查询显示值为“Y”的条目。如果这是有道理的。我的问题是如何更改此代码以不删除,而只是更改该值。

我觉得它看起来像:

但我不确定在哪里定义它只有一个将被修改的值,在这种情况下是“已删除”值。也许还说它应该只返回视图一个值为“N”的条目

0 投票
1 回答
361 浏览

sql-server - 使用 aspnet 架构和 UserRepository/EF ASPNET MVC 4 创建用户

我有一个关于在我的 bd 中创建用户的问题。我使用 userRepository 在 aspnet 模式中创建用户。

所以为了创建一个用户,我必须在 aspnet_user 和 aspnet_membership 表中创建一行

userId 是一个身份密钥,所以是我的 bdd 管理这个......所以现在,我的 UserRepository 类中有这个代码:

但是,我不认为这是使用 aspnet_User 和 aspnet_Membership 之间的外键创建用户的好方法......在这里,我有一个唯一的用户名,但如果不是,我不知道我会怎么做完毕 ...

有人可以帮助我吗?感谢您的帮助

0 投票
2 回答
1709 浏览

entity-framework - 如何在实体框架中禁用属性的自动映射

我决定在实体框架中使用流畅的映射。我的意图是通过没有任何属性和自动映射功能的代码映射所有内容。我发现的最好方法是类 EntityTypeConfiguration,我为项目中的每个实体实现了它。

后来我将属性添加到我的一个实体。这个属性不需要被持久化。我已经预料到,在我为这个属性添加映射之前,它会被数据库和持久层忽略。不幸的是,它不是那样工作的,并且属性是映射的。唯一的方法是使用 Ignore 方法或 NotMapped 属性,但我不想明确地这样做。

有什么办法可以阻止实体框架自动映射?我试图从 DbModelBuilder 中删除所有约定,但它没有帮助。

0 投票
2 回答
368 浏览

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 个表),所以我认为这应该不是什么大问题,尽管我确定我没有正确地做某事

0 投票
1 回答
328 浏览

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)。不完美,但为了“完成它”,它可以工作。

0 投票
1 回答
637 浏览

.net - 违反多重性约束的原因是什么。

我有一个 A 类,它有另一个 B 类的列表

尽管所有其他文章都告诉 B 类也可能包含 A 类的对象,但事实并非如此。当我填充数据并尝试保存时,关系'A_PointCollection'的角色'A_PointCollection_Source'具有多重性1或0..1。抛出异常。.注意我不是在定义关系,而是让实体框架自己定义。所以,请提出可能的解决方案

0 投票
0 回答
193 浏览

performance - 预编译的视图不起作用

我试图使用预编译的视图来获得良好的性能,我成功​​地生成了视图,并且在编译时和运行时 .edmx 中的一切都是相同的。早些时候,默认连接工厂的数据提供程序存在错误,.edmx 总是将 SqlClient 提供程序用于默认连接工厂,即使您将默认连接工厂更改为其他数据提供程序,但是当我注释掉类的构造函数时,这种情况得到了克服继承 DbContext,在 .edmx 文件中的此连接提供者与我在 app.config 中的默认连接工厂中指定的相同之后。因此,在编译时生成的 .Edmx 和运行时 .edmx 中的一切都是相同的。

但是当我在编译时生成视图并使用视图来优化性能时,当我调用 dbcontext.SaveChanges() 时会引发以下异常

“EntityContainer 'DatabaseContext' 的映射和元数​​据信息不再匹配用于创建预生成视图的信息。”

上述异常表明存在一些不匹配,但我检查了 edmx,一切都一样。所以是什么问题。或者我经历过这个

预编译视图不影响性能

因为它暗示了不同的装配问题。因此,对于我的情况,我有一个 project1,它有几个 POCO 类和不同的 project2,它引用 project1 并使用 project1 的 POCO 类,并且 DbContext 类已经在 project2 中定义,我正在为 project2 生成视图,那么到底是什么问题在此先感谢您的帮助

0 投票
1 回答
6195 浏览

c# - EntityFramework 5 Code First 多重继承映射 (TPC)

好吧,可能这个问题之前已经回答过,但我一直在研究,我只是找不到解决我的具体问题的方法

此示例的代码 - Visual Studio 2012 - 控制台应用程序

所以我有一个具有多个继承对象的 EntityFramework Code First 模型。我创建了这个代表我的问题的例子:

模型

语境

我想使用TPC (Table Per Concrete Type) 映射

运行迁移并更新我的数据库后,结果如下:

在此处输入图像描述

这是我的期望。到目前为止,一切都很好。

但是后来.......我决定像这样Gender向我的类添加一个对象和一个属性Person:(这不是我的真实模型,它只是一个示例)

应用迁移并更新数据库后,这是数据库模型:

在此处输入图像描述

为什么?

我错过了什么?我只希望 EF 在我的继承层次结构中映射我的引用属性。我期望该表包含一个完全一样ExecutiveEmployees的外键和GendersEmployeesGenders

我在我的MyContext.OnModelCreating

但是当我尝试添加迁移时,我收到了这个错误:

无法映射类型“ExecutiveEmployee”上的属性“Gender”,因为它已从模型中显式排除,或者它属于正在使用的 DbModelBuilderVersion 不支持的类型。