メモ程度に残しておきます。
以下のようなvirtualを使って外部キーとして定義されているCustomerモデルを持つRecordモデルがある。
/// <summary>/// 記録/// </summary>[Description("記録")][Table("Records")]publicclassRecord{/// <summary>/// コンストラクタ/// </summary>publicRecord(){}// <summary>/// ID/// </summary>[Description("ID")]publiclongId{get;set;}/// <summary>/// 記録日時/// </summary>[Description("記録日時")]publicDateTimeRecordAt{get;set;}/// <summary>/// 顧客/// </summary>[Required]publicvirtualCustomerCustomer{get;set;}}/// <summary>/// 顧客/// </summary>[Description("顧客")][Table("Customers")]publicclassCustomer{/// <summary>/// コンストラクタ/// </summary>publicCustomer(){}// <summary>/// ID/// </summary>[Description("ID")]publiclongId{get;set;}/// <summary>/// 名前(姓)/// </summary>[Description("名前(姓)")][Required][StringLength(20)]publicstringLastName{get;set;}/// <summary>/// 名前(名)/// </summary>[Description("名前(名)")][Required][StringLength(20)]publicstringFirstName{get;set;}}このモデルにRecordAtとCustomer.Idの2つで複合indexを張りたいパターン。
/// <summary>/// 記録/// </summary>[Description("記録")][Table("Records")]publicclassRecord{/// <summary>/// コンストラクタ/// </summary>publicRecord(){}// <summary>/// ID/// </summary>[Description("ID")]publiclongId{get;set;}/// <summary>/// 記録日時/// </summary>[Description("記録日時")][Index("IX_Customer_Id_RecordAt",2)]publicDateTimeRecordAt{get;set;}/// <summary>/// CustomerプロパティのIdの値が入る/// </summary>[ForeignKey("Customer")][Index("IX_Customer_Id_RecordAt",1)]publiclongCustomer_Id{get;set;}/// <summary>/// 顧客/// </summary>[Required]publicvirtualCustomerCustomer{get;set;}}/// <summary>/// 顧客/// </summary>[Description("顧客")][Table("Customers")]publicpartialclassCustomer{/// <summary>/// コンストラクタ/// </summary>publicCustomer(){}// <summary>/// ID/// </summary>[Description("ID")]publiclongId{get;set;}/// <summary>/// 名前(姓)/// </summary>[Description("名前(姓)")][Required][StringLength(20)]publicstringLastName{get;set;}/// <summary>/// 名前(名)/// </summary>[Description("名前(名)")][Required][StringLength(20)]publicstringFirstName{get;set;}}ForeignKey属性を付けると「外部キー制約のモデル名_プロパティ名」でCustomer.Idの値がセットされるプロパティを定義できる。
Index属性は(キー名, Order)で複合インデックスを張ることができる。