问题标签 [tph]
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.
c# - EF TPH 继承查询
尝试为我正在制作的系统实现一个非常简单的 TPH 设置,1 个基类,2 个继承类。
但是继承的类都属于同一个实体集,所以在我的 ObjectContext 使用循环中,我只能访问基础抽象类。我不太确定如何获得具体类的元素?(我也将其转换为使用 POCO)。
然后在我的应用程序中使用实体:
有一个 CelestialBodies 实体集sec
,但没有我期望的行星/卫星。
不太确定需要做什么才能访问它们。
谢谢
c# - EF4 CTP5 如何?将继承的属性映射到相关表中的字段
我使用 Table Per Hierarchy (TPH) 定义了一个名为变量和派生类的实体。基类“变量”包含一组 PropertyValue:
现在,我想派生一个 SpecialVariable 类(或多个),它定义了一些应该映射到 PropertyValues(表)中的条目的 SpecialProperties(例如 HighLimit)。
我的 OnModelCreating 函数目前看起来像这样:
有人可以给我一些提示如何实现这一点,而无需在派生类中编写大量难看的代码。(性能并不那么重要。)
最好的祝福,
克里斯
entity-framework - 实体框架多级 TPH
假设我有一个地址表,可以由两个不同的表使用。SourceID 确定我们要加入的表。这已使用 TPH 和 SourceID = 1 的条件拆分出来。这很好用。我还希望能够更进一步,拥有另一个具有 2 个条件(SourceID = 1 和 TypeID =2)的实体。我尝试从我的第一个子实体继承,但生成的 SQL 没有考虑这两个条件(第一个派生实体的 SourceID = 1 条件和新派生实体的 TypeID = 2)
有什么方法可以让 TPH 具有多层次的层次结构,以便我根据一组条件有不同的类型?谢谢你的帮助!
entity-framework - 实体框架中的条件映射 - 使用 TPH 进行 OR 操作
我们有一个类似实体和三个派生实体,Vehicle
例如和。这个继承层次是用TPH实现的。Car
Motorbike
Bicycle
以下是实体映射条件:
__disc__ = car
车用__disc__ = motorbike
摩托车__disc__ = bicycle
自行车如何使用以下映射条件
Vehicle
like派生另一个孩子MotorVehicle
__disc__ = car OR motorbike
机动车
当我使用TPT具有这种结构时,我会在数据库中这样查看:
我认为 TPH 不需要这种观点。
请注意,我不能像这样更改继承:Vehicle<-- MotorVehicle<-- Car. 不要考虑注入汽车作为汽车和其他孩子的父母,因为汽车和摩托车和自行车已经存在。我只想为所有机动车辆分配一些业务。
inheritance - 如何将 TPH 模型连接到详细信息页面
我有一个模型如下:
我需要设置一个对 ProductA 和 ProductB 都有效的 details.aspx 页面。所以我打算用这种方法来做。
我相信应该有一种简单的方法可以从子类中获取 Detailvalue 列表。如果你能在这个案子上提供帮助,我将不胜感激。
然后我将使用中继器并使用 Product.DetailValue 作为 itemType 并希望将它放在 aspx 上。
注意:我只是一个初学者,我阅读了很多关于 TPH 的内容,但无法了解如何从产品对象中访问子类的字段。
亲切的问候,
entity-framework - 用现有的 TPT 声明 TPH(代码优先)
我有几个类继承了 1 个基本抽象类。它通过fluent API 映射到现有数据库(使用Table-Per-Concrete-Type,即未映射到任何表的基本抽象类)。
现在我想在我的代码中添加一些统计信息,对我来说最好的解决方案是对 3-4 个新类使用 TPH 方法。它可能继承也可能不继承与上述相同的类。
但我不知道如何指导 EF 对这 3-4 个类使用 TPH 方法。我是否需要添加带有鉴别器的正确表并且可以使用它?或者我需要通过流畅的 API 以某种方式指定它?
frameworks - 实体框架映射外键与集合和 TPH 继承
我尝试用 TPH 继承来映射这个简单的模型:
映射是用流利的表示法完成的,如下所示:
如果我让 EF 创建我的数据库,则会在 TestDetail 表中添加两个字段:
但是这两个字段总是 Null 和多余的,因为基础 Dteail 类上的 MasterId 字段做同样的工作?
如果我从数据库中删除这些字段并尝试获取主记录的详细信息,如下所示:
引发异常:当我访问“详细信息”属性时,列名 MasterA_Id、MasterB_Id 无效。
我做错了什么?如何在 TPH 模式下映射此模型,而数据库中没有这两个字段?
谢谢你的帮助。
entity-framework - EF Code first TPH,类型更改时不更新鉴别器列
我正在学习实体框架并在删除记录时与 TPH 作斗争。我创建了如下 POCO
在我的 DbContext 中,我重写了 OnModelCreating 方法。我在那里有以下代码。
我已经编写了插入和更新事务的代码。插入工作正常。它使用 paymentDetail(作为现金)创建交易。但是当我更新它并将 PaymentDetail 更改为 BankTransfer 时,它会更新 PaymentDetail 中的详细信息(这是一个作为 TPH 创建的平面表)。但它不会更改鉴别器列。它仍然是 Cash,因为它最初是使用 Cash 类型创建的。我通过谷歌搜索发现鉴别器列没有改变。所以我试图删除该行,但它现在给出了以下错误
DELETE 语句与 REFERENCE 约束“FK_dbo.Transaction_dbo.PaymentDetail_PaymentDetail_Id”冲突。冲突发生在数据库“MyRecordsDB”、表“dbo.Transaction”、列“PaymentDetail_Id”中。该语句已终止。
EF代码创建的TransactionTable首先有PaymentDetail_ID可以有allow null,那么谁能告诉我这个问题吗?
在这种情况下使用 TPH 好不好?
以下是从我的 RepositoryClass 修改 Transaction 的方法供参考。
entity-framework - 进一步扩展 ASP.NET MVC5 身份系统中的 ApplicationUser 类
我正在为大学创建一个简单的应用程序,学生可以在其中提出某种类型的请求,然后由特定专业的员工处理。
我想使用默认的 MVC5 身份系统并使用 TPH 模式扩展 ApplicationUser 类。所以我给ApplicationUser添加了通用属性:
然后我创建了两个继承 ApplicationUser 的类:
我目前想要的是让两种类型的用户都注册为基本身份,并将两者都保存在一个表中,就像asp.net 上的继承示例一样
正如我所想,在 AccountController 中初始化用户变量就足够了,然后将其作为学生或员工传递给 UserManager。但是在尝试注册为学生后,我得到了这个例外:
我的上下文类:
以及控制器操作的一部分:
我尝试将 ApplicationClass 设置为抽象类,但没有运气。任何帮助,将不胜感激。
更新:问题不在于代码本身。在对模型进行这些更改后,我根本没有删除(或更新)数据库。之后一切正常。
ef-code-first - EF 5 Code First 使用 TPH 不断重新生成子类之间的交叉表
在 Table-Per-Hierarchy 模式中,以 MM 关系表示两个子类:
每隔一段时间,我就会收到异常“支持上下文的模型已经改变......”,即使我没有对我的模型进行任何更改。
我查看了建议的迁移,它想要做的是删除表Subproject1Subproject2s
并替换它with Subproject2Subproject1s
。
我以前见过它这样做一次,但后来我正在更改模型,所以我很少考虑它。但它似乎有可能成为一个主要问题,如果它偶尔这样做的话,它本身!
谢谢你的帮助!