0

私はかなり単純に見えることをしようとしていますが、null参照を取得しています....

最後のステートメントの assoc files プロパティに null があります...

TestInfo.AggregateRoutes.MainBlogEntry = new Blog { BlogType = 1, Title = TestInfo.UniqueRecordIdentifier, Description = TestInfo.UniqueRecordIdentifier, DateAdded = DateTime.Now, User = TestInfo.UniqueRecordIdentifier };


IBlogRepository blogRepo = new BlogRepository();
var assocFile = new AssocFile { Name = TestInfo.UniqueRecordIdentifier, Url = TestInfo.UniqueRecordIdentifier };

TestInfo.AggregateRoutes.MainBlogEntry.AssocFiles.Add(assocFile);

これは、私がやろうとしていることをサポートするために書いたコードです...

public class PteDotNetContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<AssocFile> AssocFiles { get; set; }
    }

 public class Blog
    {

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int BlogId { get; set; }
        public int BlogType { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public DateTime DateAdded { get; set; }
        public string User { get; set; }

        public virtual ICollection<AssocFile> AssocFiles { get; set; }
    }

 public class AssocFile
    {

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int AssocFileId { get; set; }

        public int BlogId { get; set; }
        public string Url { get; set; }
        public string Name { get; set; }

        public virtual Category Category { get; set; }
    }

仮想と宣言することの要点は、外部キー制約を作成することだと思いましたか?

4

1 に答える 1

0

エンティティをインスタンス化するときは、初めてアクセスする前に、コレクションのナビゲーション プロパティも初期化する必要があります。あなたの場合MainBlogEntry.AssocFiles = new List<AssocFile>();。これは、プロパティの実装にコレクションを初期化するロジックが含まれていないためです。

EF がエンティティの新しいインスタンスを作成するとき、エンティティをサブクラス化し (つまり、プロキシの作成)、プロパティの既定の機能をオーバーライドします。

TestInfo.AggregateRoutes.MainBlogEntry = new Blog { BlogType = 1, Title = TestInfo.UniqueRecordIdentifier, Description = TestInfo.UniqueRecordIdentifier, DateAdded = DateTime.Now, User = TestInfo.UniqueRecordIdentifier };


IBlogRepository blogRepo = new BlogRepository();
var assocFile = new AssocFile { Name = TestInfo.UniqueRecordIdentifier, Url = TestInfo.UniqueRecordIdentifier };

TestInfo.AggregateRoutes.MainBlogEntry.AssocFiles = new List<AssocFile>();

TestInfo.AggregateRoutes.MainBlogEntry.AssocFiles.Add(assocFile);
于 2012-04-13T13:33:30.877 に答える