私有字段上的RequiredAttribute

时间:2011-10-06 18:08:04

标签: c# entity-framework-4.1 ef-code-first

我有一个实体

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。

关于如何解决这个问题的任何想法?

修改 我刚刚发现: - 以下划线作为首字母的名称将被放弃。 - 使用内部给出相同的结果。

2 个答案:

答案 0 :(得分:2)

创建一个公共映射字符串字段,该字段返回您要保存的URI的字符串表示形式。由于您的公共URI未映射,因此您所描述的当然是正常的。

修改

请更改此内容:

[Required]
private string _linkInString { get; set; }

进入这个:

[Required]
public string _linkInString { get; set; }

现在如何保存?

答案 1 :(得分:1)

EF中的代码映射有一个非常大的限制。它遵循可访问性规则。因此私有字段对您的类是私有的,并且它没有映射,因为上下文没有看到它。

如果你想用EF这种方式放弃代码优先/流畅的映射并使用EDMX this is possible