MVCプロジェクトのために、最初にEntity Framework 6.1 &コードを使用しています。複数のnull可能な複合外部キー
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
}
1つのPackageDayScheduleには、packageCityまたはpackagehotelまたはPackagePlaceToVistが必要です。私の質問は、データアノテーションを使用してPackageDaySheduleテーブルの外部キーを指定する方法です。 PackageIdはPackageCity、PackageHotelに共通です。& PackagePlaceToVistのナビゲーションプロパティ。
まず、コンポジットキーを使用することは、ほとんど常に悪い考えです。第二に、外部キーで構成される複合キーを使用することは、常に*悪い考えです。第3に、ヌル可能な*外部キーで構成される複合キーを使用することは、単に致命的な考えです。通常の 'identity'または' uniqueidentifier'カラムをプライマリ・キーとして使用し、それをdayと呼んでください。 –
なぜこれをMVCに入れますか? –
@ChrisPratt チップには非常に感謝しています。私はあなたのアドバイスに従ってデザインを変更します。 – user3627847