ef6修改virtual属性

h13bk 2014-10-25 10:10:56
环境是ef6,.net4.5

我的类是这样的:
public class Person
{
public int ID { get; set; }

[Display(Name="姓名")]
[Required, MaxLength(50)]
[Index]
public string Name { get; set; }

[Display(Name = "父级")]
public virtual Person Parent { get; set; }
public virtual ICollection<Person> Children { get; set; }

[Display(Name = "职业")]
public virtual Profession Profession { get; set; }

[Display(Name = "爱好")]
public virtual IList<Like> Likes { get; set; }
}

Profession和Like都是两个非常简单的类,在此忽略

想请教一下如何修改Person的Parent,Children,Profession,Likes这几个属性
我在controller中的修改代码(传到post方法中的person对象的相关属性是已经被修改过的):

[HttpPost]
public ActionResult Edit(Person person) //person内存对象的值已经在页面被修改
{
...
Person parent = person.Parent.ID != 0 ? this.db.Persons.Find(person.Parent.ID) : null;
db.Entry(person).Reference(m => m.Parent).CurrentValue = parent;
db.Entry(person).State = EntityState.Modified;
db.SaveChanges();
}

Person的简单属性(如Name)可以直接被修改,但是Parent的值并没有改变,同样的Children,Profession,Likes也是修改不了,请教一下该如何修改这些导航属性?
...全文
127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2014-10-26
  • 打赏
  • 举报
回复
try this:
[HttpPost]
public ActionResult Edit(Person person)  //person内存对象的值已经在页面被修改
{
                 var p=this.db.Persons.Find(person.ID);
                 。。。。
		 p.Parent=person.Parent;
		 p.Profession=person.Profession;
		 p.Likes=person.Likes;
 
                db.SaveChanges();
}

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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