У меня есть следующие модели EntityInverseProperty с миграцией базы данных не работает, когда собственность находится под защитой или внутренняя
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; }
}
Это чистое простые много-ко-многому пользователю & Tag Я использую Миграции данных , Когда я выполняю команду Add-Migration или Update-Database , я получаю следующую ошибку: «InversePropertyAttribute в свойстве« Теги »в типе« Kigg.DomainObjects.Entities.User »недопустим. Свойство« Пользователи »недействительно свойства навигации для связанного типа «Kigg.DomainObjects.Entities.Tag». Убедитесь, что свойство существует и является допустимым средством навигации ссылки или коллекции. "
Когда я изменил модификатор доступа свойства «Пользователь» в теге на общедоступный, он отлично работал, и поколение - это то, что я хочу.
С моей точки зрения дизайна Я хочу скрыть свойство Tag.Users и сделать его защищенным или внутренним, чтобы сохранить его для внутреннего использования, поскольку я не хочу публиковать его в общедоступном API.
Примечание: Я не обсуждаю здесь свой проект. Я спрашиваю, возможно ли это сделать, если Tag.Users защищен или внутренне?
Должна быть возможность нацеливать непубличные объекты на аннотации данных с EF 4.3, но я думаю, что эта функция как-то не работает. До EF 4.3 это было невозможно. –
@LadislavMrnka Да это возможно. Проблема связана с миграцией базы данных. Запуск Update-Database или Add-Migration приводит к вышеуказанной ошибке, упомянутой в моем вопросе –
Я достиг того, что хотел сделать, используя Fluent API с миграцией данных. Но все же любопытно узнать, можно ли использовать Data Annotation. –