は、簡単なモデリングの問題ですが、いくつかの理由のために私はそれを解決するための最良の方法は何であるかのまわりで私の頭をラップすることはできません。Entity Frameworkのモデルコード最初
私はPersonクラスを持っています(これはユーザーに関する情報を保持しています)、私はPhoneCarrierに関する情報を保持する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; }
}
PhoneCarrierクラスで、これはこれをモデル化するための正しい方法だろう場合、私は思っていた、私が感じる
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; }
Personクラスでありますソリューション私は人の電話のキャリアについての情報を取得したい場合は、今、私は最初の人のphonecarrier IDを取得する必要があり、その後、私はどこのid = phonecarrierのID phoneCarrierを呼び出す必要があるため。ここでは実際の例
var phoneCarrierId = person.PhoneCarrier;
return db.PhoneCarriers.Where(x => x.ID == phoneCarrierId).FirstOrDefault().EmailExtension;
は私がちょうどdb.Person.PhoneCarrierを呼び出すことができますどこに(そのようなタイプのPhoneCarrierのPersonクラスにint型PhoneCarrierフィールドを作るように)を設定できます方法があります。 EmailExtension?これは、よりクリーンなアプローチのように思えるし、それが可能であった場合は、私はそれをやっている方法は、より正確な方法である場合、私は思っていた...
-
は、詳細はこちらを参照してください。 1対多の関係はありますか? – sachin