SQL Server 2000DBAVisual Studio .NET 2003Windows 2003.NET 1.1ADO.NETWindows 2000架构师Windows XP中级开发Visual StudioSQL ServerSQLWindows.NETC#
使用属性持久化对象






2.94/5 (7投票s)
2005年6月16日
2分钟阅读

45252

305
无需编写 ADO.NET 代码即可实现对象的持久化和填充。
引言
最近我一直在研究简化个人项目中的服务器端数据访问代码,这促使我阅读了一些声明式编程原则。解释声明式编程的原则超出了本文的范围,但简而言之,它意味着声明而不是编写大量的代码。
实现
我没有使用传统的 O/R 映射器,而是构建了一个类库,其中包含用于声明域对象和存储过程之间关系的属性。域对象应该派生自一个基类,该基类实现了两种方法:“Persist
”和“Populate
”。这些方法用于解析属性并持久化或填充对象。
一个实现属性的对象的示例
[PersistableObject("SetObject", false, "GetObject")]
public class DataObject : PersistableObjectBase
{
private int mID;
private string mName;
private bool mActive;
public DataObject() {}
[PersistableProperty("UserID", PersistablePropertyDatatypes.Int,
PersistablePropertyTypes.Key)]
public int ID
{
get { return mID; }
set { mID = value; }
}
[PersistableProperty("UserName", PersistablePropertyDatatypes.NVarchar,
PersistablePropertyTypes.Field, 50)]
public string Name
{
get { return mName; }
set { mName = value; }
}
[PersistableProperty("Active", PersistablePropertyDatatypes.Bit,
PersistablePropertyTypes.Field)]
public bool Active
{
get { return mActive; }
set { mActive = value; }
}
}
此对象派生自“PersistableObjectBase
”,因此您现在可以调用“Persist
”方法将对象持久化到数据库中。调用“Persist
”方法时,将使用反射来解析属性,并通过常规 ADO.NET 调用顶部属性“SetObject
”中声明的存储过程。所有这些现在都将在后台发生。您不必再为该对象编写 ADO.NET 代码,除非您必须执行一些非常特殊的操作。请注意,您仍然必须为 INSERT
/ UPDATE
和 SELECT
编写存储过程。 尚不支持删除对象,但将在以后的版本中实现。
程序集按原样提供,使用它需要您自担风险,但请随意下载并试用。 我需要对此提供所有反馈,因此如果您对如何改进它有一些想法,请与我联系。
下一步
为了改进程序集的使用,将来必须实现以下内容
- 删除数据库中的对象。
- 基准性能测试。