我有一个WCF项目,并使用实体框架v6和代码优先生成数据库。 但我有一个用户和FeedRss类之间的关系问题。我想为每个用户提供几个FeedRss。我的代码工作(没有例外),但不加入ICollection供稿(用户),这个列表在数据库恢复后是空的。实体框架代码优先:一对多关系(空列表)
public class User
{
[Key]
public int UserID {get; set;}
...
[InverseProperty("User")]
public ICollection<FeedRSS> feeds { get; set; }
public User()
{
feeds = new List<FeedRSS>();
}
}
一个用户>许多feedRss
public class FeedRSS
{
[Key]
public int ID { get; set; }
...
public int UserId { get; set; }
[ForeignKey("UserId")]
public User User { get; set; }
public FeedRSS()
{
}
}
public class UsersContext : DbContext { public DbSet<User> Users { get; set; } public DbSet<FeedRSS> Feeds { get; set; } }
我的测试我的代码功能(但返回一个空列表):
public User getUser(int Id)
{
using (UsersContext context = new UsersContext())
{
return context.Users.ToList().Find(
delegate(User u) {
return u.UserID == Id;
});
}
}
public List<FeedRSS> getFeedListTest(User u)
{
using (UsersContext ctx = new UsersContext())
{
User user = ctx.Users.First(i => i.UserID == u.UserID);
FeedRSS f = new FeedRSS() { name = "code", link = "uri" };
user.feeds.Add(f);
//the list user.feeds lenght is = 1
ctx.SaveChanges();
//update working
}
//get the same user in the database but the list uuu.feeds lenght is 0 :(
User uuu = this.getUser(u.UserID);
return uuu.feeds.ToList();
}
我测试其他代码非常不同(流利的API,强制UserId在FeedRss ..),但我不明白,在实体框架的关系的原则。我曾尝试几个例子代码...
*很遗憾我的英语近似
一个很好的文章,你可以添加的getUser方法的代码? 我认为你必须在你的查询中添加一个Include(p => p.feeds)。 – CodeNotFound
完成,我不知道包括。我rtfm ^^ – poupou