我正在考虑使用带有EF的TPT继承。我有以下表格。
StockLocation StockLocationType
StockLocationType包含以下类型:
批量 拣选 安全
我在考虑使用StockLocation作为基表,并创建一个批量,可选和安全的表。 在安全表中会有一个名为locked的列,它会使位置锁定,因此无人可以从中选择。
要将某个位置从可选择位置切换为安全位置,我是否必须从可选择表格中删除数据并将其插入安全表格,并在锁定位置时将锁定列设置为true?然后在解锁位置后将其从安全表移回可选表?
或者我在每张桌子上都有重复记录吗?
似乎我不断在两个表之间传递数据。
任何意见/建议都会很棒。
答案 0 :(得分:0)
要将某个位置从可选择切换为安全,我是否必须删除 来自可选表的数据并将其插入安全表中 并在锁定位置时将锁定列设置为true?
这不是继承的用例。一种实体是永久性的。您无法在EF中更改实体类型(您可以通过直接在数据库中执行SQL来实现这一点,但这会破坏EF并且可能会产生意外后果)。
或者我在每张桌子上都有重复记录吗?
这也难以实现,因为你只能在单个表中记录派生类型,否则EF将无法理解它的类型和火灾错误。
似乎我不断在两个表之间传递数据。
如果您的数据库是以这种方式设计的,则必须传递数据,您必须使用EF中的常规导航属性。