我有我认为是一个简单的建模问题,但由于某种原因,我无法围绕解决问题的最佳方式解决问题。实体框架建模代码优先
我有一个人类(它拥有关于用户的信息),我有一个PhoneCarrier类,它拥有关于PhoneCarriers(他们的名字和电子邮件扩展将电子邮件发送到个人电话)的信息。
这是Person类
public class Person
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Display(Name = "First Name")]
[Required(ErrorMessage ="{0} is required")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[Required(ErrorMessage ="{0} is required")]
public string LastName { get; set; }
[Display(Name = "Dish Order")]
//[Range(1, byte.MaxValue, ErrorMessage = "Value of {0} must be greater than 0")]
public byte DishOrder { get; set; }
[Display(Name = "E-Mail")]
[RegularExpression(".+\\@.+\\..+",
ErrorMessage = "Please enter a valid email address")]
public string Email { get; set; }
[DataType(DataType.Text)]
[RegularExpression(@"(^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$)", ErrorMessage = "{0} must be a numeric value of length 10")]
[Display(Name = "Phone Number")]
//[DisplayFormat(DataFormatString = "{0:###-###-####")]
public string PhoneNumber { get; set; }
[Display(Name = "Phone Carrier")]
public int PhoneCarrier { get; set; }
public virtual ICollection<Fine> Fines { get; set; }
public virtual ICollection<DishDate> DishDates { get; set; }
[NotMapped]
public static IEnumerable<PhoneCarrier> PhoneCarriers { get; set; }
这是PhoneCarrier类
public class PhoneCarrier
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required(ErrorMessage ="{0} is required")]
public string Company { get; set; }
[Display(Name = "Email Extension")]
[Required(ErrorMessage ="{0} is required")]
public string EmailExtension { get; set; }
}
我想知道,这将是模型的正确方法,我感觉好像自己是一个更好的因为现在,如果我想获得关于某人的电话公司的信息,我必须先获取该人员的电话号码编号,然后我必须拨打其中id =电话号码编号的PhoneCarrier。下面是一个实际的例子
var phoneCarrierId = person.PhoneCarrier;
return db.PhoneCarriers.Where(x => x.ID == phoneCarrierId).FirstOrDefault().EmailExtension;
有没有一种方法,我可以将它设置(如使INT PhoneCarrier场在Person类类型PhoneCarrier的)的地方,我可以只叫db.Person.PhoneCarrier。 EmailExtension?这似乎是一个更清洁的方法,我想知道如果这是可能的,或者如果我这样做的方式是更正确的方式...
你为什么在人的IEnumerable PhoneCarriers。有一对多的关系吗? –
sachin