Table 拆分 - 是否可以将 table 拆分为两个完全独立的实体?

Table splitting - is it possible to split a table into two entirely independent entities?

我有一个简单的用户table:

CREATE TABLE User
 (
UserId int,
UserName nvarchar(35),
Password nvarchar(size),
 );

我想在 EF6 中将其拆分为两个实体。用户和用户密码。它们代表两种截然不同的业务需求,但恰好存在于相同的 table.

所以我创建了两个实体。

public class User
{
 public int Id { get; set; }
 public string Username { get; set; }
}

public class UserPassword
{
 public int Id { get; set; }
 public string Password{ get; set; }
}

我有这样的地图

class UserMap : EntityTypeConfiguration<User>
{
    public UserMap()
    {
        Property(p => p.Id).HasColumnName("UserId");
    }
}

class PasswordMap : EntityTypeConfiguration<UserPassword>
{
    public PasswordMap()
    {
        ToTable("User");
        Property(p => p.Id).HasColumnName("UserId");
    }
}

但是当我使用这些实体时,出现以下错误:

留言="The entity types 'UserPassword' and 'User' cannot share table 'User' because they are not in the same type hierarchy or do not have a valid one to one foreign key relationship with matching primary keys between them."

我不想建立关系。我在为每个层级设置 table 时遇到问题。我不想要歧视者。我真的只是想有两种不同的方式来达到相同的 table 是谨慎的。除了创建两个上下文之外,还有其他方法可以做到这一点吗?

啊。根据我的评论,如果您为 UserPassword 创建了一个 updatable 视图,那么您可以将其用作实体的 table。 EF 既不知道也不关心实际更新用户的更新 table,反之亦然。