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

发布于 2024-09-01 21:32:43 字数 488 浏览 12 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

謌踐踏愛綪 2024-09-08 21:32:43

您可以使用 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.

你列表最软的妹 2024-09-08 21:32:43

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文