为什么我在EntityFramework的Code First模式下创建的导航属性值总为null?

weixin_38080213 2016-10-21 12:49:37
菜鸟初学求教,这是在项目中抽取出来的代码
public class User
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int UserId { get; set; }

public virtual int UserType { get; set; }
}

public class Person : User
{
public override int UserType
{
get
{
return 0;
}
set
{
base.UserType = 0;
}
}

public string PersonName { get; set; }

public ICollection<Sunny.Models.WorkExperience> WorkExperiences { get; set; }
}

public class WorkExperience
{
[Key]
public int ExperienceId { get; set; }

public int PersonId { get; set; }

public string Job { get; set; }

[ForeignKey("PersonId")]
public Person Person { get; set; }
}

public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
this.Map<User>(user => user.ToTable("User"));
this.Map<Person>(person => person.ToTable("Person"));
}
}

public class DbContext : System.Data.Entity.DbContext
{
public DbContext() : base("name=Model")
{
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfiguration());
modelBuilder.Conventions.Remove<Conventions.PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}

public DbSet<User> Users { get; set; }
public DbSet<Person> Persons { get; set; }
public DbSet<WorkExperience> WorkExperiences { get; set; }
}

static void Main(string[] args)
{
DbContext context = new Models.DbContext();

Person person = new Models.Person();
person.UserId = 1;
person.PersonName = "Name";
context.Persons.Add(person);

WorkExperience experience = new Models.WorkExperience();
experience.PersonId = 1;
experience.Job = "Coder";
context.WorkExperiences.Add(experience);

context.SaveChanges();

context = new DbContext();
Console.Write(context.WorkExperiences.First().Person == null);
Console.Read();
}

以上代码Main方法的运行结果为显示true,也就是说导航属性WorkExperiences.Person属性的值总为null,但数据库里面已经插入数据,请问为什么没有加载导航属性的值?问题出在哪里?




...全文
13 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧