我正在重写我们的应用程序。我们正在构建DataMappers以在我们的DAL中工作。我的问题涉及到我从BLL获得一个复杂对象的情况,该对象被传递给DataMapper以被持久化。
假设这个对象有很多属性,包括其他对象的列表。
...即
public class Customer
{
public String name;
public String age;
public String ShoeSize;
public List<Address> a;
public List<Orders> o;
{
在可能“年龄”是BLL中更新的唯一字段的情况下。
将此持久保存到数据库有什么好的做法?
你会坚持整个结构吗?或者我如何构造这个,以便我的DataMapper知道哪些字段已更改,以便我不必更新数据库中的整个结构?我想我可以为每个属性设置某种IsDirty字段,但这可能会很快变得混乱。
谢谢,
MW
答案 0 :(得分:1)
如果将原始对象保留在内存中并传入带有更改的新“版本”,则可以检查新对象的更改并仅保存该对象。
public class CustomerMapper {
// ...
public void Update(Customer original, Customer update)
{
// check each property for changes
}
// ...
}
更新后,用新的替换原始对象。但是如果你有多个线程,请注意并发问题。
答案 1 :(得分:0)
为什么重新发明轮子?我已经做了几个数据层,这不值得麻烦。在使用现有的ORM时,所有这些问题(以及许多您未曾想到的)已经得到了解决。
我最喜欢的是 nhibernate 。它可以为您提供大量功能,也可以通过几乎为零的配置来修复所有功能。
看这里: