实体框架:继承,更改对象类型

Rus*_*ian 13 inheritance entity-framework

假设我在模型中有2个类:User(映射到USERS表)和PrivilegedUser(继承User,其他信息存储在PRIVILEGEDUSERS表中).

现在,我在USERS(和User的实例)中有一行,需要将该用户转换为PrivilegedUser(即在PRIVILEGEDUSERS中创建具有相同Id的记录).有没有办法在没有删除/插入的情况下执行此操作?

问题是您在模型中没有PRIVILEGEDUSERS表示,因此您不能仅创建PrivilegedUser的那部分.


这只是一个例子.普通用户属性,PrivilegedUser可能还有一些折扣或个人经理或其他任何东西.同时,无论具体的用户类型如何,还有其他表需要引用用户.我已经使用Table-per-Type继承模式实现了它.在数据库级别,将用户从一种类型转换为另一种类型非常简单(您只需要从扩展表中插入或删除记录).但在EF中,您只有UserSet,它存储User和PrivilegedUser对象.这就是为什么我要问是可以用PrivilegedUser 替换现有的 User对象来保留现有的Id并且不从USERS表中删除记录.

Dan*_*Dan 0

您有两个代表用户的表似乎是错误的。

拥有一个 Users 表(适用于所有用户),然后拥有一个 UserPrivileges 表来代表他们可以执行的操作不是更好吗?这样,就不需要删除/插入,并且您可以为用户引用一张表。

第三个表可用于表示实际权限。

用户
ID 用户名...

用户权限
用户 ID 权限 ID

权限
ID 描述