在练习EF4.1的时候获取数据有个问题,看图
关系图如上
代码:
Blog类
1 [Table("Blogs")] 2 public class Blog 3 { 4 [Column("BlogId")] 5 public int Id { get; set; } 6 7 [Column("BlogName")] 8 public string Name { get; set; } 9 10 [Column("BlogTitle")] 11 public string Title { get; set; } 12 13 [Column("BlogBody")] 14 public string Body { get; set; } 15 16 public string Summery { get; set; } 17 18 [Column("BlogCreateDate")] 19 public DateTime CreateDate { get; set; } 20 21 public int UserId { get; set; } 22 23 public User User { get; set; } 24 25 public virtual ICollection<Comment> Comment { get; set; } 26 27 public virtual ICollection<Category> Category { get; set; } 28 29 }
User类
其他类就不在给出了.
关系代码
问题:
当我在查看Blog的Details的时候 Blog类中的User等于NULL
图:
怎么样才能让User在查询的时候获取到数据?
modelBuilder.Entity<Blog>().HasRequired(u => u.user).WithMany().HasForeignKey(u => u.UserId);
你这个关系是一对一关系.而我设计的user和blog是一对多的关系.
@东落阳: Blog 的代码看不了,打不开 View Code
@Yu: Sorry 现在可以了
@东落阳:
修改 Blog
public User User { get; set; }
成
[ForeignKey("UserId")]
[InverseProperty("Blogs")]
public User User { get; set; }
=================
修改 User 的
public virtual ICollection<Blog> Blog { get; set; }
成
public virtual ICollection<Blog> Blogs { get; set; }
@Yu: 晚上我回去试试.
@东落阳:
今天我也碰到了,也解决了.
原来默认是不会加载数据的,只有要在用的时候,使用贪婪加载就行了, 这样才会生成相应的SQL
db.Blog.Include(b => b.User);
跟 modelBuilder 没有关系
好像楼主的 没有问题, 看看 Userid 这些名字 是不是要对应什么的。
应该是你blog也要写明与user有关联
modelBuilder.Entity<Blog>()
.HasRequired(a=>a.User).HasForeignKey(a=>a.User_id) .HasMany<Comment>(b => b.Comment) .WithRequired(c => c.Blog);
没有用在 HasRequired(a=>a.User) 的后面点不出HasForeignKey这个方法
报了一个错:“System.Data.Entity.ModelConfiguration.Configuration.RequiredNavigationPropertyConfiguration<MyCodeFirstMvcWeb.Entities.Blog,MyCodeFirstMvcWeb.Entities.User>”不包含“HasForeignKey”的定义,并且找不到可接受类型为“System.Data.Entity.ModelConfiguration.Configuration.RequiredNavigationPropertyConfiguration<MyCodeFirstMvcWeb.Entities.Blog,MyCodeFirstMvcWeb.Entities.User>”的第一个参数的扩展方法“HasForeignKey”(是否缺少 using 指令或程序集引用?) .
我想了一下,在指定User和Blog关系的时候指定一个外间
我下面代码还是不行
modelBuilder.Entity<User>()
.HasMany<Blog>(e => e.Blog)
.WithRequired(p => p.User)
.HasForeignKey(s => s.UserId);