【发布时间】:2009-08-06 15:04:13
【问题描述】:
假设我在模型中有 2 个类:User(映射到 USERS 表)和 PrivilegedUser(继承 User,附加信息存储在 PRIVILEGEDUSERS 表中)。
现在,我在 USERS(和 User 的实例)中有一行,需要将该用户转换为 PrivilegedUser(即在 PRIVILEGEDUSERS 中创建具有相同 ID 的记录)。没有删除/插入有没有办法做到这一点?
问题是您在模型中没有 PRIVILEGEDUSERS 表示,因此您不能只创建 PrivilegedUser 的那一部分。
这只是一个例子。 PrivilegedUser 可能有一些折扣或个人经理或任何除了普通用户属性。同时,还有其他表需要引用用户,而不管具体的用户类型如何。我已经使用 Table-per-Type 继承模式实现了它。在数据库级别,将用户从一种类型转换为另一种类型非常简单(您只需从扩展表中插入或删除记录)。但在 EF 中,您只有 UserSet 存储 User 和 PrivilegedUser 对象。这就是为什么我问是否可以用 PrivilegedUser 替换 existing User 对象,保留现有 Id 并且不从 USERS 表中删除记录。
【问题讨论】:
标签: entity-framework inheritance