我有以下实体模型
public class User
{
public virtual long Id{get; set;}
[InverseProperty("Users")]
public virtual ICollection<Tag> Tags { get; protected set; }
}
public class Tag
{
public virtual long Id{get; set;}
internal protected virtual ICollection<User> Users { get; set; }
}
这是我正在使用数据迁移的纯粹简单的多对多关系用户和标签。当我执行命令 Add-Migration 或 Update-Database 时,我收到以下错误“在类型 'Kigg.DomainObjects.Entities.User' 上的属性 'Tags' 上的 InversePropertyAttribute 无效。属性 'Users' 不是有效的导航相关类型“Kigg.DomainObjects.Entities.Tag”上的属性。确保该属性存在并且是有效的引用或集合导航属性。”
当我将 Tag 中 Users 属性的访问修饰符更改为 public 时,它工作正常,并且生成是我想要的。
从我的设计角度来看,我想隐藏 Tag.Users 属性并使其受保护或内部使用,以供内部使用,因为我不想将其公开给公共 API。
注意:我不是在这里讨论我的设计。我在问是否可以在 Tag.Users 受保护或内部使用时这样做?