У меня возникли проблемы, отображающую мои модели:MVC с Entity Framework Модель Mapping
пользователя админу 1 до 0..1 отношения:
Один пользователь может быть один вид статуса администратора или нет админ статус
Пользователи на билеты 1 ко многим отношений:
Пользователи могут открывать несколько билетов, но билет может быть назначен только одному пользователю. Пользователь в билете 1 ко многим
Администратором билета 1 ко многим отношений:
Администратор (пользователь со статусом администратора) имеет билеты, возложенные на него, чтобы исправить. Билет должен иметь adminID, чтобы определить, какой администратор ему назначен.
Я следил за учебниками, которые уже имеют модели (СМОТРЕТЬ НИЖЕ). Я впервые создаю MVC с веб-приложением Entity Framework, поэтому я не знаю, возможно ли круговое сопоставление.
Я получаю эту ошибку:
"FK_dbo.User_dbo.Administrator_AdministratorID". The conflict occurred in database "RecreationalServicesTicketingSystem.DAL.IssueContext", table "dbo.Administrator", column 'AdministratorID'. The statement has been terminated.
User.cs
public class User
{
public int UserID { get; set; }
[StringLength(50, MinimumLength = 1)]
public string LastName { get; set; }
[StringLength(50, MinimumLength = 1, ErrorMessage = "First name cannot be longer than 50 characters.")]
[Column("FirstName")]
public string FirstMidName { get; set; }
public string FullName
{
get { return LastName + ", " + FirstMidName; }
}
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime EnrollmentDate { get; set; }
public int? AdministratorID { get; set; }
public virtual Administrator Administrator { get; set; }
public int DepartmentID { get; set; }
[ForeignKey("DepartmentID")]
public virtual Department Department { get; set; }
public int DepotID { get; set; }
[ForeignKey("DepotID")]
public virtual Depot Depot { get; set; }
public virtual ICollection<Ticket> Tickets { get; set; }
}
Administrator.cs
public class Administrator
{
public int AdministratorID { get; set; }
public string AdministratorTitle { get; set; }
public virtual ICollection<Ticket> Tickets { get; set; }
}
Ticket.cs
public class Ticket
{
public int TicketID { get; set; }
public string Issue { get; set; }
[DisplayFormat(NullDisplayText = "No Priority")]
public Priority? Priority { get; set; }
[ForeignKey("CategoryID")]
public virtual Category Category { get; set; }
public int CategoryID { get; set; }
public int AdministratorID { get; set; }
[ForeignKey("UserID")]
public virtual User User { get; set; }
public int UserID { get; set; }
}
Я после этого 1 до 0..1 модели для моего (User/инструктора) 1 0 ... 1 (Administrator/OfficeAssignment)
public class Instructor
{
public Int InstructorID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public int? OfficeAssignmentID { get; set; }
public virtual OfficeAssignment OfficeAssignment { get; set; }
public int? HomeID { get; set; }
public virtual Home Home { get; set; }
}
public class OfficeAssignment
{
public int OfficeAssignmentID { get; set; }
public string Location { get; set; }
}
я следовал этому 1 ко многим модели для моего (Administrator/Team) 1 до 0 ... 1 (Ticket/плеер)
Player.cs
public class Player
{
public int PlayerId { get; set; }
public string Name { get; set; }
public int TeamId { get; set; }
public virtual Team Team { get; set; } // This is new
}
Team.cs
public class Team
{
public int TeamId { get; set; }
[Required] public string Name { get; set; }
public string City { get; set; }
public DateTime Founded { get; set; }
public virtual ICollection<player> Players { get; set; } // This is new
}
У вас не хватает общественного администратора виртуального администратора {получить; задавать; } в вашей модели Ticket. Также обязательно определите [ForeignKey («AdministratorID»)] –
Я добавил 'public virtual Administrator Administrator {get; задавать; } 'к модели билета и' [ForeignKey («AdministratorID»)] 'above' public virtual Administrator Administrator {get; задавать; } 'в User.cs и Ticket.cs, и он все еще имел ту же ошибку – TykiMikk
@UthmanRahimi' System.Data.SqlClient.SqlException: инструкция INSERT противоречила ограничению FOREIGN KEY «FK_dbo.User_dbo.Administrator_AdministratorID». Конфликт произошел в базе данных «LeisureServicesTicketingSystem.DAL.IssueContext», таблица «dbo.Администратор ", столбец 'AdministratorID'. Заявление было прервано.' – TykiMikk