【发布时间】:2016-11-04 17:18:37
【问题描述】:
我将实体框架与 MVVM 一起使用。 我的图层如下所示:
- 查看
- ViewModel:为视图提供数据和命令。
- 服务:提供对 DAL 的访问。包含业务逻辑。
- DAL:提供对数据库的访问。我将存储库模式与 UnitOfWork 一起使用。
我的 ViewModel 中的属性或多或少直接绑定到我的数据库中的实体。示例:
public class MyViewModel
{
private MyEntity _myEntity;
private MyService _myService;
// A property which is bound to my view (bidirectionally)
public string TextToDisplay
{
get { return _myEntity.SomeText; }
set
{
if (_myEntity.SomeText != value)
{
_myEntity.SomeText = value;
RaisePropertyChanged("TextToDisplay");
}
}
}
// Method called by a command when the "Save"-button is pressed
private void Save()
{
_myService.Save(_myEntity);
}
}
public class MyService
{
private MyRepository _myRepository;
private IUnitOfWork _unitOfWork;
public void Save(MyEntity myEntity)
{
_myRepository.Insert(myEntity);
_unitOfWork.Save();
}
}
因此,当调用Save 时,数据库生成的属性/属性(如ID)会自动更新/生成。
这会导致副作用吗?这是一种不好的做法吗?
你是怎么处理的?将对象从数据库传递到视图模型时,您是否“分离”或复制对象?或者传递给视图模型的对象是否应该是另一种类型?我该如何完美处理?
【问题讨论】:
标签: c# wpf entity-framework mvvm