-1

私は古典的なシナリオの製品とブランドの関係を持っています。そして、私のクラスはこのようなものです。

    パブリック クラスの製品
    {
        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() によって取得されるすべての製品は例外をスローしませんか?

4

1 に答える 1