实体框架TPT继承在表之间移动数据

时间:2012-08-23 12:03:04

标签: asp.net-mvc entity-framework table-per-type

我正在考虑使用带有EF的TPT继承。我有以下表格。

StockLocation StockLocationType

StockLocationType包含以下类型:

批量 拣选 安全

我在考虑使用StockLocation作为基表,并创建一个批量,可选和安全的表。 在安全表中会有一个名为locked的列,它会使位置锁定,因此无人可以从中选择。

要将某个位置从可选择位置切换为安全位置,我是否必须从可选择表格中删除数据并将其插入安全表格,并在锁定位置时将锁定列设置为true?然后在解锁位置后将其从安全表移回可选表?

或者我在每张桌子上都有重复记录吗?

似乎我不断在两个表之间传递数据。

任何意见/建议都会很棒。

1 个答案:

答案 0 :(得分:0)

  

要将某个位置从可选择切换为安全,我是否必须删除   来自可选表的数据并将其插入安全表中   并在锁定位置时将锁定列设置为true?

这不是继承的用例。一种实体是永久性的。您无法在EF中更改实体类型(您可以通过直接在数据库中执行SQL来实现这一点,但这会破坏EF并且可能会产生意外后果)。

  

或者我在每张桌子上都有重复记录吗?

这也难以实现,因为你只能在单个表中记录派生类型,否则EF将无法理解它的类型和火灾错误。

  

似乎我不断在两个表之间传递数据。

如果您的数据库是以这种方式设计的,则必须传递数据,您必须使用EF中的常规导航属性。