您可能想阅读活动记录模式及其一些示例,然后实现您自己的类/类。
这是一个包含一些基本概念的简单类的粗略草图(如下)。
按照这种方法,您可以扩展该模式以满足您的需求。您可以从数据库中检索记录作为对象,更改其值,然后更新记录(选项 2)。或者如果开销太大,则使用直接更新数据库中记录的静态方法(选项1)。对于插入,如果需要,数据库(SP/查询)应验证表上的自然/唯一键,并可能返回指示唯一约束错误的特定值/代码)。对于更新,如果允许更新自然键字段,则需要执行相同的检查。
这在很大程度上取决于您的应用程序将允许特定表的哪些功能。
我倾向于从数据库中检索对象,然后更改值并保存,而不是静态方法。对我来说,调用代码更容易使用,并且可以更轻松地处理类内的神秘业务逻辑。
public class MyEntityClass
{
private int _isNew;
private int _isDirty;
private int _pkValue;
private string _colValue;
public MyEntityClass()
{
_isNew = true;
}
public int PKValue
{
get {return _pkValue;}
}
public string ColValue
{
get {return _colValue;}
set
{
if (value != _colValue)
{
_colValue = value;
_isDirty = true;
}
}
}
public void Load(int pkValue)
{
_pkValue = pkValue;
//TODO: query database and set member vars based on results (_colVal)
// if data found
_isNew = false;
_isDirty = false;
}
public void Save()
{
if (_isNew)
{
//TODO: insert record into DB
//TODO: return DB generated PK ID value from SP/query, and set to _pkValue
}
else if (_isDirty)
{
//TODO: update record in DB
}
}
}