私は古典的なシナリオの製品とブランドの関係を持っています。そして、私のクラスはこのようなものです。
パブリック クラスの製品
{
public int ProductID { get; 設定; }
public string ProductName { get; 設定; }
公開小数価格{取得; 設定; }
パブリック文字列 PreDescription { get; 設定; }
パブリックイント? BrandID { 取得; 設定; }
// プライベート ブランド ブランド;
パブリック バーチャル ブランド ブランド
{
得る; //{ if (this.Brand == null) Brand = new Brands(); ブランドを返す; }
設定; //{ ブランド = 値; }
}
}
パブリック クラス ブランド
{
public int BrandID { get; 設定; }
パブリック文字列 BrandName { get; 設定; }
プライベートリスト製品;
public virtual リスト製品
{
get { if (this.products == null) products = new List(); 製品を返品します。}
セット{製品=値; }
}
}
そしてこんな感じでマッピング。
public class ProductsMap : EntityTypeConfiguration{
public ProductsMap()
{
ToTable("商品");
HasKey(p => p.ProductID).Property(p => p.ProductID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.HasOptional(p => p.Brand).WithMany(b => b.Products);
}
}
public class BrandsMap : EntityTypeConfiguration
{
public BrandsMap()
{
ToTable("ブランド");
HasKey(b => b.BrandID).Property(b => b.BrandID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
GetAll()、GetByID() という 2 つのメソッドがあります。Product テーブルの一部の行に Null 値があります。
GetAll メソッドを実行しようとすると、Null Exception (一部の製品のブランドが null を返す) がスローされますが、GetByID() によって取得されるすべての製品は例外をスローしませんか?