我在 EF 模型中定义了一个简单的 2 对象继承,Person <- User。
Person 是基础实体/类,它不是抽象的,它包含名字、姓氏、电子邮件等字段。
User 是派生的实体/类,包含用户名、lastlogin、islockedout 等字段。
数据库使用每个类型的表模式,因此有一个表用于人员,另一个表用于用户。两者都使用相同的主键字段 PersonID。PersonID 是一个 IDENTITY 列,但在 EDM 中,PersonID 的 StoreGeneratedPattern 设置为 None。
因为这是一个 table-per-type 继承模式,所以可能有一个 Person 行/对象没有对应的 User 行/对象。这样系统就可以包含关于非用户的数据。但是,一个人最终可能会成为用户,这就是我遇到问题的地方。
我有一个针对这种情况的测试用例,其中系统找到了一个想要变成用户的人。我尝试在新的用户对象上设置 PersonID 字段,将其添加到 ObjectContext 并保存更改。发生的情况是数据库创建了一个新的 Person 行以及新的 User 行,而忽略了我为 PersonID 设置的值。
我怎样才能解决这个问题?我是否必须创建存储过程来处理 EDM crud 操作?