2012-03-15 23 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