using System;
using System.Collections;namespace TAL.Shared.Data
{
public abstract class DataRecord
{
private Hashtable _dataRecord; protected object this[string name]
{
get { return this[name, null]; }
set { _dataRecord[name] = (value==null || (value is string && (string)value=="")) ? DBNull.Value : value; }
} protected object this[string name, object defaultValue]
{
get { return _dataRecord[name] == null || _dataRecord[name]==DBNull.Value ? defaultValue : _dataRecord[name]; }
} public DataRecord()
{
_dataRecord = new Hashtable();
} public void MergeWith(DataRecord newRecord)
{
foreach (string key in newRecord._dataRecord.Keys)
{
if (!_dataRecord.ContainsKey(key))
_dataRecord[key] = newRecord[key];
}
} public virtual void AssignRecord(System.Data.IDataRecord record)
{
_dataRecord.Clear(); for (int i = 0; i < record.FieldCount; i++)
_dataRecord.Add(record.GetName(i), record[i]);
} public virtual void AssignRecord(System.Collections.IDictionary record)
{
_dataRecord.Clear(); foreach (string key in record.Keys)
{
_dataRecord.Add(key, record[key]);
}
} public object GetDbValue(string column)
{
return this[column]==null
? DBNull.Value
: this[column];
}
}
}