我在一个网站上工作,解决方案中有两个项目,一个是业务逻辑项目,另一个是网站项目。我知道我想将实体上下文排除在web项目之外,只使用框架创建的业务对象,但我不知道如何以这种方式保存修改后的对象。
假设我的实体模型创建了这个类:
public class Person //Person entity
{
Int32 Id {get;set;}
String Name {get;set;}
Address Address {get;set;} //Address entity
}
我创建这个类是为了得到一个特定的人:
public static class PersonController
{
public static Person GetById(int id)
{
using (Entities context = new Entities())
{
return context.Persons.FirstOrDefault(x => x.Id == id);
}
}
}
这允许我通过调用PersonController.GetById(1)来获取一个没有上下文的人;我可以在获得人员属性后更改这些属性,但我不知道如何将修改后的信息保存回数据库。理想情况下,我想分部类Person并添加一个.Save()方法,该方法将处理创建一个上下文,将Person添加到其中并保存更改。但当我不久前尝试此操作时,它仍然被附加到旧上下文中,存在各种问题,即使我取消对它的匹配并将其附加到新上下文中,它也会被附加为EntityState。如果我没记错的话,它是未更改的,所以当我在附加后调用context.SaveChages()时,实际上什么都不会更新。
我想我有两个问题:
1) 我做这件事的方法好吗/有更好的方法吗?如果我以一种非常糟糕的方式来做这件事,我会感谢一些psudo代码为我指明正确的方向;一个链接到解释如何进行这类事情的帖子也同样有效。
2) 有人能为保存方法提供一些psudo代码吗?save方法还需要处理是否附加或删除了地址。