У меня есть класс компании и сотрудника, оба наследуются от класса Holder. Я использую таблицу для каждого типа с EntityFramework 5, чтобы создать их в базе данныхВнешний ключ с базовым кодом сущности Первый и унаследованный класс
И у меня есть класс CheckinTools, который использует мой класс Holder.
public class Company : Holder
{
public virtual string Email { get; set; }
public virtual string Phone { get; set; }
}
public class Employee: Holder
{
public virtual string Phone { get; set; }
public virtual string LastName { get; set; }
}
public class Holder: IntId
{
public virtual string Name { get; set; }
}
public class CheckinTool: IntId
{
public virtual Holder EmployeeCompanyHolder { get; set; }
public virtual Tool Tool { get; set; }
public virtual DateTime CheckinDateTime { get; set; }
}
public class IntId
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
Когда я тестирование CRUD в моем MVC приложении все работает хорошо, пока я не создать CheckinTool, после того, как я создал CheckinTool, любая операцию, чтобы получить работник или компанию по Id возвращает следующее сообщение об ошибке: " Свойство «Идентификатор» является частью ключевой информации объекта и не может быть изменено »
Я заметил, что в моей таблице CheckinTool у него есть столбец« IdHolder », у которого есть внешний ключ для идентификатора в таблице Holder, в то время как мой Таблицы Employee and Company имеют внешний ключ к идентификатору, также в держателе
IMO Я решил проблему в плохой путь.
Я только что изменил тип собственности EmployeeCompany в классе CheckinTool от Holder до int Но я чувствую, что что-то не вписывается в это решение.
У кого-нибудь есть идея о том, как его решить без необходимости изменения свойства EmplotyeeCompany?
заранее спасибо
Я не знаю, в чем проблема, потому что я никогда не использовал аннотации для определения сопоставлений между объектами и таблицами. Пожалуйста, рассмотрите использование Fluent API. – mostruash
Он не использует аннотацию для отображения. Аннотации сообщают EF, что это ключ и должны быть сгенерированы автоматически. – Maess
Я свободно владею API API, чтобы применять таблицу к типу с Entity Framework, но какую аннотацию мне нужно использовать? Извините, что я не понял ваш комментарий. Maess –