私は古典的なシナリオの製品とブランドの関係を持っています。そして、私のクラスはこのようなものです。
パブリック クラスの製品 { 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() によって取得されるすべての製品は例外をスローしませんか?