У меня есть то, что я думаю, это простая проблема моделирования, но по какой-то причине я не могу окунуться в голову, что лучший способ ее решить.Entity Framework Код для моделирования сначала
У меня есть класс Person (содержит информацию о пользователе), и у меня есть класс 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; }
}
мне было интересно, если это было бы правильно смоделировать это, я чувствую, как будто их это лучше потому что прямо сейчас, если я хочу получить информацию о телефоне оператора Person, мне нужно сначала получить идентификатор phonecarrier Person, а затем я должен позвонить PhoneCarrier, где id id = phonecarrier. Вот конкретный пример
var phoneCarrierId = person.PhoneCarrier;
return db.PhoneCarriers.Where(x => x.ID == phoneCarrierId).FirstOrDefault().EmailExtension;
Есть ли способ, где я мог бы установить его (например, сделать поле PhoneCarrier Int в классе Person типа PhoneCarrier), где я мог бы просто позвонить db.Person.PhoneCarrier. EmailExtension? Это похоже на гораздо более чистый подход, и мне было интересно, возможно ли это, или если я это делаю, это более правильный способ ...
Почему у вас есть IEnumerable PhoneCarriers в лицо. Есть ли отношения «один-много»? –
sachin