我使用的是实体框架6.1&代码第一种方法用于我的MVC项目。
public class PackageDaySchedule
{
public int Id {get;set;}
public DateTime Time {get;set;}
Public int PackageId {get;set;}
Public int? PackageCity{get;set;}
public int? PackageHotelId {get;set;}
Public int? PackagePlaceToVisitId {get;set;}
//navigation property
public virtual Package {get;set;}
public virtual PackageCity Package City {get;st;}
public virtual PackageHotel PackageHotel {get;st;}
public virtual PackagePlaceToVisit PackagePlaceToVisit{get;set;}
}
Public class Package {
Public int PackageId {get;set;}
Public List<PackageCity> PackageCities {get;set;}
}
Public class PackageCity{
[Key, Column(Order = 0)]
Public int PackageId {get;set;}
[Key, Column(Order = 1)]
public int CityId {get;set;}
public List<PackageHotel> PackageHotels {get;set;}
//virtual properties - Package and City
}
Public class PackageHotel{
[Key, Column(Order = 0)]
Public int PackageId {get;set;}
[Key, Column(Order = 1)]
public int CityId {get;set;}
[Key, Column(Order = 2)]
Public int HotelId {get;set;}
//virtual properties - Package,City, Hotel
}
对于一个PackageDaySchedule,应该有一个packageCity或packagehotel或PackagePlaceToVist。我的问题是如何使用数据注释为PackageDayShedule表指定外键。 PackageId是PackageCity,PackageHotel&amp; amp; PackagePlaceToVist导航属性。
答案 0 :(得分:1)
关于如何在asp mvc模型中表示数据库表的摘要
模型如何表示数据库表
在下一节中,我将解释如何从代码优先应用程序为数据库创建数据模型,并介绍如何在ASP MVC中表示关系。
在这个例子中,我们有三个包含以下模式的表:
学生表
StudentID,LastName,FirstName,EnrollmentDate
课程表
CourseID,Title,Credits
注册表
EnrollmentID,CourseID,StudentID,成绩
这些表中的每一个必须在单独的模型中表示。
学生表
public partial class Student
{
public int StudentID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public Nullable<System.DateTime> EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
公共虚拟注册是一种导航属性,用于保存与此实体相关的其他实体,例如:在我们的案例中,学生实体将保存与他相关的所有注册实体的数据。
提示:具有1:M关系的表格&amp;它位于1面,它的模型表示应该包含M表的导航属性,它应该是一个集合
课程表 和学生一样
第3。注册表
public partial class Enrollment
{
public int EnrollmentID { get; set; }
public Nullable<decimal> Grade { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public virtual Course Course { get; set; }
public virtual Student Student { get; set; }
}
SudentID属性是外键,相应的导航属性是Student。注册实体与一个学生实体相关联,因此该属性只能容纳一个学生实体,这就是我们不使用IEnumerable的原因。 对于courseID属性也是如此。
提示:M侧的表格应包含外键和表格。相应的Navigation属性,但不是集合。