2015-06-05 41 views
2

我有一個簡單的用戶表:表分割 - 是否可以將表分成兩個完全獨立的實體?

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"); 
    } 
} 

但是當我使用這些實體,我得到以下錯誤:

消息=「實體類型‘的userPassword’和‘用戶’不能共享表'用戶',因爲它們不在相同的類型層次結構中,或者沒有有效的一對一外鍵關係,並且它們之間具有匹配的主鍵。「

我不想創建關係。我無法按照層次結構設置表格。我不想要歧視。我真的只想有兩種不同的方式來到同一張謹慎的桌子。有沒有辦法做到這一點,而不是創建兩個上下文?

+0

「我不想創建關係。」但是,當他們被安排在同一張桌子上時,你已經做到了。插入新用戶時會發生什麼? –

+0

密碼可以爲空。添加新用戶不會影響密碼。 –

+1

我想我只是通過在UserPassword的數據庫中有一個可更新的視圖來解決問題,然後將它用作表。 –

回答

1

啊。根據我的評論,如果您爲UserPassword創建了可更新視圖,那麼您可以使用它作爲實體的表格。 EF既不知道也不關心實際更新用戶表的更新,反之亦然。

相關問題