【问题标题】:RequiredAttribute on private fields私有字段的RequiredAttribute
【发布时间】:2011-12-02 11:27:48
【问题描述】:

我有一个实体

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 列的可获取 Avatar。

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

编辑 我刚刚发现: - 下划线作为首字母的名称被放弃。 - 使用 internal 给出相同的结果。

【问题讨论】:

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


    【解决方案1】:

    创建一个公共映射字符串字段,该字段返回您要保存为 URI 的字符串表示形式的内容。由于您的公共 URI 没有按照您的描述映射所有作品。

    编辑:

    请更改:

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

    进入这个:

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

    现在如何保存?

    【讨论】:

    • 你能给我举个例子吗?由于我的英语不好,我不太了解你。
    • 是的,当然。所以,其实我之前理解你的回答,但是我很难理解我不能使用私有字段
    【解决方案2】:

    EF 中的代码映射有一个很大的限制。它遵循可访问性规则。所以私有字段对你的类来说是私有的,它没有被映射,因为上下文看不到它。

    如果您想以这种方式使用 EF,请放弃代码优先/流畅映射并使用 EDMX where this is possible

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-19
      • 2013-03-08
      • 1970-01-01
      • 2010-09-29
      • 2012-06-07
      • 2012-06-28
      • 2020-10-25
      相关资源
      最近更新 更多