2012-04-13 64 views
0

我想要做什么似乎相当简单,但我得到一个空引用....如何使用Code First实体框架链接属性?

我对assoc命令将一个空文件属性中的最后一条语句...

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; } 
    } 

我想整点在宣布它的虚拟是,它会创建一个外键约束?

回答

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); 
相关问题