C# 表拆分-是否可以将表拆分为两个完全独立的实体?

C# 表拆分-是否可以将表拆分为两个完全独立的实体?,c#,entity-framework,table-splitting,C#,Entity Framework,Table Splitting,我有一个简单的用户表: CREATE TABLE User ( UserId int, UserName nvarchar(35), Password nvarchar(size), ); 我想在EF6中将其拆分为两个实体。用户和用户密码。这代表了两种完全不同的业务需求,但恰好位于同一张桌子上 所以我创建了两个实体 public class User { public int Id { get; set; } public string Username { get; set; } }

我有一个简单的用户表:

CREATE TABLE User
 (
UserId int,
UserName nvarchar(35),
Password nvarchar(size),
 );
我想在EF6中将其拆分为两个实体。用户和用户密码。这代表了两种完全不同的业务需求,但恰好位于同一张桌子上

所以我创建了两个实体

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");
    }
}
类用户映射:EntityTypeConfiguration
{
公共用户映射()
{
属性(p=>p.Id);
}
}
类密码映射:EntityTypeConfiguration
{
公共密码映射()
{
ToTable(“用户”);
属性(p=>p.Id);
}
}
但是,当我使用这些实体时,会出现以下错误:

Message=“实体类型‘UserPassword’和‘User’不能共享表‘User’,因为它们不在同一类型层次结构中,或者它们之间没有有效的一对一外键关系,并且主键匹配。”


我不想建立关系。我在设置每个层次结构的表时遇到问题。我不要鉴别器。我真的只想有两种不同的方式来进入同一张桌子,这是谨慎的。除了创建两个上下文,还有其他方法吗?

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

“我不想创建关系。”但当他们被安排住在同一个表中时,您已经这样做了。插入新用户时会发生什么情况?密码可为空。添加新用户不会影响密码。我想我应该在数据库中为
UserPassword
创建一个可更新的视图,然后将其用作表来解决这个问题。太棒了。这正是我想要的解决方案。非常感谢。