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,反之亦然。
我有一个简单的用户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,反之亦然。