如何隐藏实体模型中的数据库列?

时间:2010-05-16 10:12:53

标签: entity-framework entity-framework-4 edmx

我正在使用实体框架4并有一个问题:

我的数据库中有一个我想使用自定义SQL管理的密码列。所以我不希望模型对它有任何了解。

我尝试在Mapping Details窗口中删除该属性,但后来出现了编译错误:

  

错误3023:从第1660行开始映射片段时出现问题:表中的User User.Password必须映射用户:它没有默认值且不可为空。

因此,我在数据库中使列可以为空并更新了模型。现在我收到了这个错误:

  

错误3004:从第1660行开始映射片段时出现问题:没有为“设置用户”中的属性User.Password,User.Salt指定映射。   具有密钥(PK)的实体在以下情况下不会往返:     实体是类型[UserDirectoryModel.User]

有什么想法吗?

谢谢, 尼克

2 个答案:

答案 0 :(得分:11)

您可以使用EDMX设计器中的“属性”窗格将“属性”标记为“私有”:在代码生成选项下,它具有可以从“公共”更改为“私有”的Getter和Setter选项。

答案 1 :(得分:5)

解决此问题的一种方法是创建不包含密码列的用户表视图。然后使用模型中的视图而不是表格。