Re[3]: Из одной строки поднимать два объекта.
От: IT Россия linq2db.com
Дата: 05.12.05 17:17
Оценка: 3 (1)
Здравствуйте, 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);
}
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.