2011-05-29 100 views
0

问题有作者。 当添加一个新问题时,我使用getCurrentUser()从数据库中提取作者;实体框架导航属性与数据库对象

Question q=new Question(); 
q.Author=getCurrentUser(); 
context.Questions.Add(q); 

这生成只有当属性的当前值为null时才能设置EntityKey属性。因为作者已经有了Id的值。我应该如何指定作者已经在数据库中?

+0

你的'getCurrentUser'使用了它自己的对象上下文的实例吗? – 2011-05-29 11:05:54

+0

您正在使用断开连接数据还是将您的实体连接到对象上下文?他们是标准实体还是您使用自我跟踪实体?需要更多的信息来回答这个问题,因为它可能是很多事情。 – 2011-05-29 11:25:13

+0

getCurrentUser是一个静态方法。它使用当前会话(其中存储用户的ID)来获取与该用户关联的对象。 – Ryan 2011-05-29 11:45:10

回答

0

如果您希望使用这个简单的代码,您必须使用相同的上下文实例来添加问题并加载用户。如果你要使用两个背景情况下,你必须修改代码:

Question q=new Question(); 
User u = getCurrentUser(); 
context.Users.Attach(u); 
q.Author = u; 
context.Questions.Add(q); 

在某些情况下,可能还需要在getCurrentUser方法从上下文中分离用户。