我有一个实体
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; }
}
}
有一个private field (_linkInString)
,因为URI不能作为Uri保存在数据库中,只能作为字符串保存。
首次运行时,我的数据库正在创建我只能使用Id列的gettable Avatar。
关于如何解决这个问题的任何想法?
修改 我刚刚发现: - 以下划线作为首字母的名称将被放弃。 - 使用内部给出相同的结果。
答案 0 :(得分:2)
创建一个公共映射字符串字段,该字段返回您要保存的URI的字符串表示形式。由于您的公共URI未映射,因此您所描述的当然是正常的。
修改强>
请更改此内容:
[Required]
private string _linkInString { get; set; }
进入这个:
[Required]
public string _linkInString { get; set; }
现在如何保存?
答案 1 :(得分:1)
EF中的代码映射有一个非常大的限制。它遵循可访问性规则。因此私有字段对您的类是私有的,并且它没有映射,因为上下文没有看到它。
如果你想用EF这种方式放弃代码优先/流畅的映射并使用EDMX this is possible。