[英]MVC with Entity Framework Model Mapping
I'm having trouble mapping my models: 我在绘制模型时遇到问题:
User to Admin 1 to 0..1 relationship: 用户与管理员1到0..1的关系:
One user can be one kind of admin status or no admin status 一个用户可以是一种管理员状态或没有管理员状态
Users to Tickets 1 to Many relationship: 票证一对多的用户关系:
Users can open multiple tickets but a ticket can only be assigned to one User. 用户可以打开多个票证,但票证只能分配给一个用户。 User to Ticket 1 to Many
用户票一对多
Administrator to Ticket 1 to Many relationship: 管理员与票证一对多关系:
Admin (A user with admin status) has tickets assigned to him to fix. 管理员(具有管理员身份的用户)已分配给他修复的故障单。 The ticket should have an adminID to identify which admin is assigned to it .
票证应该有一个adminID来标识分配给它的管理员。
I followed tutorials which already has models (LOOK BELOW). 我按照已有模型的教程(LOOK BELOW)。 It's my first time creating a MVC with Entity Framework Web Application so I don't know if Circular Mapping is possible.
这是我第一次使用Entity Framework Web Application创建MVC,所以我不知道Round Mapping是否可行。
I get this error: 我收到此错误:
"FK_dbo.User_dbo.Administrator_AdministratorID".
“FK_dbo.User_dbo.Administrator_AdministratorID”。 The conflict occurred in database "RecreationalServicesTicketingSystem.DAL.IssueContext", table "dbo.Administrator", column 'AdministratorID'.
数据库“ RecreationalServicesTicketingSystem.DAL.IssueContext”中的表“ dbo.Administrator”的“ AdministratorID”列中发生了冲突。 The statement has been terminated.
该语句已终止。
User.cs 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 Administrator.cs
public class Administrator
{
public int AdministratorID { get; set; }
public string AdministratorTitle { get; set; }
public virtual ICollection<Ticket> Tickets { get; set; }
}
Ticket.cs 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; }
}
I followed this 1 to 0..1 model for my (User/Instructor) 1 to 0...1 (Administrator/OfficeAssignment) 我按照1到0..1模型为我(用户/讲师)1到0 ... 1(管理员/ 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; }
}
I followed this 1 to many model for my (Administrator/Team) 1 to 0...1 (Ticket/Player) 我跟着这个1对多的模型为我(管理员/团队)1到0 ... 1(票/玩家)
Player.cs 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 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
}
I didn't decalre my administrator in my Configuration file before assigning AdminID in my User declaration. 在用户声明中分配AdminID之前,我没有在配置文件中取消管理员的身份。
Configuration.cs Snippet Configuration.cs代码段
var administrator = new List<Administrator>
{
new Administrator {AdministratorID = 1, AdministratorTitle = "Administrator Lvl 1"},
new Administrator {AdministratorID = 1, AdministratorTitle = "Administrator Lvl 2"},
new Administrator {AdministratorID = 1, AdministratorTitle = "Administrator Lvl 3"},
};
administrator.ForEach(s => context.Administrators.AddOrUpdate(p => p.AdministratorID, s));
context.SaveChanges();
var users = new List<User>
{
new User { FirstMidName = "Jason", LastName = "Wan",
EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 1, DepotID = 1,AdministratorID = 1},
new User { FirstMidName = "Andy", LastName = "Domagas",
EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 1,DepotID = 1,AdministratorID = 2},
new User { FirstMidName = "Denis", LastName = "Djohar",
EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 1 ,DepotID = 1,AdministratorID = 3},
new User { FirstMidName = "Christine", LastName = "West",
EnrollmentDate = DateTime.Parse("2016-02-18"), DepartmentID = 1, DepotID = 1},
};
users.ForEach(s => context.Users.AddOrUpdate(p => p.FirstMidName, s));
context.SaveChanges();
users.ForEach(s => context.Users.AddOrUpdate(p => p.LastName, s));
context.SaveChanges();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.