【发布时间】:2019-03-13 02:42:14
【问题描述】:
我正在开发一个网站,解决方案中有两个项目,一个是业务逻辑项目,一个是网站项目。我知道我想将实体上下文排除在 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() 方法,该方法将处理创建一个上下文,将人员添加到其中并保存更改。但是当我前一阵子尝试这个时,它仍然附加到旧上下文中存在各种问题,即使我将它分离并将其附加到新上下文,如果我没记错的话,它也会附加为 EntityState.Unchanged,所以当我在附加后调用 context.SaveChages() 时,实际上没有任何更新。
我想我有两个问题:
1) 我是否以一种好的方式来解决这个问题/是否有更好的方式?如果我以一种非常糟糕的方式这样做,我将不胜感激一些伪代码来为我指明正确的方向;一个指向解释如何处理这类事情的帖子的链接也可以。
2) 有人可以为保存方法提供一些伪代码吗?如果附加或删除地址,save 方法也需要处理。
【问题讨论】:
标签: asp.net entity-framework-4