首页 新闻 会员 周边 捐助

Entity Framework获取数据问题

0
悬赏园豆:100 [待解决问题]

在练习EF4.1的时候获取数据有个问题,看图

关系图如上

代码:

Blog类

View Code
 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类

View Code

其他类就不在给出了.

关系代码

View Code

问题:

当我在查看Blog的Details的时候 Blog类中的User等于NULL

图:

怎么样才能让User在查询的时候获取到数据?

东落阳的主页 东落阳 | 初学一级 | 园豆:102
提问于:2013-02-22 10:12
< >
分享
所有回答(3)
0

 modelBuilder.Entity<Blog>().HasRequired(u => u.user).WithMany().HasForeignKey(u => u.UserId);

Yu | 园豆:12990 (专家六级) | 2013-02-22 10:35

你这个关系是一对一关系.而我设计的user和blog是一对多的关系.

支持(0) 反对(0) 东落阳 | 园豆:102 (初学一级) | 2013-02-22 13:15

@东落阳: Blog 的代码看不了,打不开 View Code

支持(0) 反对(0) Yu | 园豆:12990 (专家六级) | 2013-02-22 13:23

@Yu: Sorry 现在可以了

支持(0) 反对(0) 东落阳 | 园豆:102 (初学一级) | 2013-02-22 15:15

@东落阳: 

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

支持(0) 反对(0) Yu | 园豆:12990 (专家六级) | 2013-02-22 17:16

@Yu: 晚上我回去试试.

支持(0) 反对(0) 东落阳 | 园豆:102 (初学一级) | 2013-02-22 18:06

@东落阳: 

今天我也碰到了,也解决了.

原来默认是不会加载数据的,只有要在用的时候,使用贪婪加载就行了, 这样才会生成相应的SQL

db.Blog.Include(b => b.User); 

 

跟 modelBuilder 没有关系

支持(1) 反对(0) Yu | 园豆:12990 (专家六级) | 2013-05-18 10:42
0

好像楼主的 没有问题,   看看 Userid 这些名字 是不是要对应什么的。

Qlin | 园豆:2403 (老鸟四级) | 2013-02-22 11:08
0

应该是你blog也要写明与user有关联

modelBuilder.Entity<Blog>()
.HasRequired(a=>a.User).HasForeignKey(a=>a.User_id)
.HasMany<Comment>(b => b.Comment) .WithRequired(c => c.Blog);
wdwwtzy | 园豆:114 (初学一级) | 2013-02-22 14:27

没有用在 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);

 

支持(0) 反对(0) 东落阳 | 园豆:102 (初学一级) | 2013-02-22 15:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册