私有字段上的RequiredAttribute
我有一个具有私有字段 (_linkInString)
的实体,
public class Avatar
{
[Key]
public int Id { get; set; }
[Required]
private string _linkInString { get; set; }
[NotMapped]
public Uri Link
{
get { return new Uri(_linkInString); }
set { _linkInString = value.AbsoluteUri; }
}
}
因为 URI 无法作为 Uri 保存在数据库中,只能作为字符串保存。
第一次运行时,我的数据库正在创建仅包含 Id 列的可获取 Avatar。
关于如何解决这个问题有什么想法吗?
编辑 我刚刚发现: - 放弃以下划线作为第一个字母的名称。 - 使用内部给出相同的结果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
创建一个公共映射字符串字段,该字段返回您想要保存为 URI 字符串表示形式的内容。当然,由于您的公共 URI 并未映射,所以所有工作都按照您的描述进行。
编辑:
请将其更改
为:
现在如何保存?
Create a public mapped string field which returns what you want to save as a string representation of your URI. Since your public URI is not mapped all works as you described of course.
Edit:
Please change this:
Into this:
How does it save now?
EF 中的代码映射有一个很大的限制。它遵循可访问性规则。因此,私有字段对于您的类来说是私有的,并且不会被映射,因为上下文看不到它。
如果您想以这种方式使用 EF,请放弃代码优先/流畅映射并使用 EDMX,其中
There is one very big limitation of code mapping in EF. It follows accessibility rules. So private field is private to your class and it is not mapped because context doesn't see it.
If you want to play with EF this way give up code first / fluent mapping and use EDMX where this is possible.