2012-03-15 22 views
2

我正在使用代碼優先的方法。我創建了我自己的用戶模型和成員資格提供者。我的模型有以下一些領域:從數據庫中「隱藏」列,但不在實體框架中查看

[Table("mytable")] 
public class MyUser 
{ 
    [Key] 
    public int UserId { get; set; } // Auto generated 

    [Required] 
    [DataType(DataType.EmailAddress)] 
    [Display(Name = "Email address")] 
    public string Email { get; set; } 

    [Required] 
    [DataType(DataType.Password)] 
    [Display(Name = "Password")] 
    public string Password { get; set; } 

    [DataType(DataType.Password)] 
    [Display(Name = "Confirm password")] 
    public string ConfirmPassword { get; set; } 

    [Display(Name = "Your name/company name")] 
    public string Name { get; set; } 
} 

的問題是,我沒有在我的數據庫ConfirmPassword柱(原因很明顯)。我如何從數據庫中「隱藏」它,但允許視圖能夠看到它的使用。將其更改爲private會將其從數據庫中隱藏起來,但該視圖不像那樣。

如何讓實體框架忽略此字段?

回答

6

[NotMapped]屬性標記您不想保留到數據庫的列。

Btw。這是一個典型的例子,你應該考慮持久化實體和你的頁面的視圖模型的區別=你應該考慮有兩個不同的類。

+0

雖然這確實起作用......它並沒有在執行中。數據模型仍然試圖驗證這兩個字段(即使在我加密密碼後)。我結束了兩個模型。一個用於DB,一個用於視圖。 – 2012-03-15 18:30:27

+0

如果您在EF和UI之間共享模型,則必須關閉EF中的驗證。 – 2012-03-15 19:01:18