requireattribute私有字段

本文关键字:字段 requireattribute | 更新日期: 2023-09-27 18:10:32

我有一个实体

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给出相同的结果。

requireattribute私有字段

创建一个公共映射字符串字段,该字段返回您希望保存为URI的字符串表示形式的内容。因为您的公共URI没有映射,所以所有的工作都像您描述的那样。

编辑:

请更改:

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

这:

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

它现在如何保存?

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

如果你想用这种方式玩EF放弃代码优先/流畅映射和使用EDMX在这是可能的