如何在实体模型中隐藏数据库列?
我正在使用 Entity Framework 4 并有一个问题:
我的数据库中有一个密码列,我想使用自定义 SQL 进行管理。所以我不想让模型知道任何关于它的事情。
我尝试删除“映射详细信息”窗口中的属性,但随后出现编译错误:
错误 3023:从第 1660 行开始的映射片段出现问题:必须映射表 User 中的列 User.Password:它没有默认值且不可为空。
因此,我使数据库中的列可为空并更新了模型。现在我得到这个错误:
错误 3004:从第 1660 行开始的映射片段出现问题:没有为“设置用户”中的属性 User.Password、User.Salt 指定映射。 具有密钥 (PK) 的实体在以下情况下不会往返: 实体类型为 [UserDirectoryModel.User]
有什么想法吗?
谢谢, 缺口
I'm using the Entity Framework 4 and have a question:
I have a password column in my database that I want to manage using custom SQL. So I don't want the model to know anything about it.
I've tried deleting the property in the Mapping Details window, but then I got a compilation error:
Error 3023: Problem in mapping fragments starting at line 1660:Column User.Password in table User must be mapped: It has no default value and is not nullable.
So, I made the column nullable in the database and updated the model. Now I get this error:
Error 3004: Problem in mapping fragments starting at line 1660:No mapping specified for properties User.Password, User.Salt in Set Users.
An Entity with Key (PK) will not round-trip when:
Entity is type [UserDirectoryModel.User]
Any ideas please?
Thanks,
Nick
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 EDMX 设计器中的“属性”窗格将属性标记为“私有”:在代码生成选项下,它具有 Getter 和 Setter 选项,您可以将它们从“公共”更改为“私有”。
You could just mark the Property as Private using the Properties pane in the EDMX designer: Under the code generation option it has Getter and Setter options that you can change from Public to Private.
解决此问题的一种方法是创建不包含密码列的用户表视图。然后使用模型中的视图而不是表。
One way to fix this is to create a view of your user table that does not include the password column. Then use the view in your model rather than the table.