Я довольно новичок в NHibernate и .NET Framework.
Я хочу отобразить свой класс Project, который имеет отношения один-ко-многим Subproject и ProjectTask.
public class Project : ProjectItem
{
public virtual IList<Subproject> Subprojects { get; set; }
public virtual IList<ProjectTask> Tasks { get; set; }
[NotNull]
public virtual ProjectStatus Status { get; set; }
public Project()
{
Subprojects = new List<Subproject>();
Tasks = new List<ProjectTask>();
Status = new ProjectStatus();
}
public virtual void AddSubProject(Subproject subproject)
{
subproject.Project = this;
Subprojects.Add(subproject);
}
public virtual void RemoveSubProject(Subproject subproject)
{
Subprojects.Remove(subproject);
}
public virtual void AddTask(ProjectTask task)
{
task.Project = this;
Tasks.Add(task);
}
public virtual void RemoveTask(ProjectTask task)
{
Tasks.Remove(task);
}
}
public class ProjectTask : ProjectItemTask
{
[NotNull]
public virtual Project Project { get; set; }
}
public class Subproject : ProjectItem
{
[NotNull]
public virtual Project Project { get; set; }
}
Мои сущности наследуют свойство Id от абстрактного базового класса.
Я использую автопреобразование для переопределения, чтобы переопределить мои отображения:только сопоставьте связь с классом Subproject, все работает нормально, и все экземпляры класса Subproject в Project.Subprojects будут правильно храниться в базе данных.Когда я использую второе переопределение для класса ProjectTask, я получаю следующее исключение:
---> NHibernate.HibernateException: в базе данных уже есть объект с именем ProjectId.Не удалось создать ограничение.Смотрите предыдущие ошибки.
---> System.Data.SqlClient.SqlException: в базе данных уже есть объект с именем ProjectId.
Кто-нибудь знает, почему это происходит?