Здравствуйте, QwErTys, Вы писали:
QET>Тоесть, альясы меняются динамически, что нужно сделать c RFD что бы ему в рантайме прописывать связи?
Это уже сложнее. Можно поизвращаться с IMapDataReceiver.
public class MyReceiver : IMapDataReceiver
{
public MyReceiver(Hashtable hash, object entity)
{
_receiver = Map.Descriptor(entity.GetType());
_hash = hash;
_entity = entity;
}
IMapDataReceiver _receiver;
Hashtable _hash;
object _entity;
public int GetOrdinal (string name)
{
object mapName = _hash[name];
if (mapName == null)
name = mapName.ToString();
return _receiver.GetOrdinal(name);
}
public void SetFieldValue(int i, string name, object entity, object value)
{
object mapName = _hash[name];
if (mapName == null)
name = mapName.ToString();
_receiver.SetFieldValue(i, name, _entity, value);
}
}
Hashtable mapNames = new Hashtable();
mapNames["a1_Name"] = "a0_Name";
using (DbManager db = new DbManager())
using (IDataReader rd = db
.SetCommand(...)
.ExecuteReader())
{
User user = new User();
Project project = new Project();
Map.ToObject(rd, new MyReceiver(mapnames, user));
Map.ToObject(rd, project);
}