Есть ли способ заставить Автокартопостроитель отображать сложный исходный график как:
public class Source {
public string Name { get; set; }
public SourceSub Sub { get; set; }
}
public class SourceSub {
public string ValA { get; set; }
public string ValB { get; set; }
}
плоскому месту назначения, которое похоже:
public class Dest {
public string Name { get; set; }
public string ValA { get; set; }
public string ValB { get; set; }
}
Я знаю, что что-то вроде этого будет работать на место назначения:
public class Dest {
public string Name { get; set; }
public string SubValA { get; set; }
public string SubValB { get; set; }
}
Однако я ищу способ отобразиться на место назначения, не требуя префикса в целевых свойствах (для дочернего класса в источнике) как долго, поскольку имена в свойствах дочернего класса источника соответствуют целевым именам свойства. Существует ли способ сказать Автокартопостроитель свойствам проекта в дочернем классе источника к плоскому целевому классу, не отображая каждого отдельного участника?
Вы можете использовать keep-lines
, чтобы получить то, что вы хотите, скопировать их, а затем отменить. Напротив, есть также линии очистки
, чтобы избавиться от линий, которые вы не хотите.
Не определяйте сопоставление столбцов, которые требуется загрузить по запросу. Затем настройте параметры, описанные в разделе Отложенная загрузка столбцов , с помощью объекта mapper
. Измененный код:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class SomeClass(Base):
__tablename__ = 'some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
#big_name = Column(String(500))
SomeClass.__table__.append_column(Column('big_name', String(500)))
SomeClass.__mapper__.add_property('big_name', deferred(SomeClass.__table__.c.big_name))
Выполнение этого тестового кода:
c = session.query(SomeClass).first()
# here SQL is loading all configured properties, but big_name
print "c: ", c
# only here another SQL request is made to load the property
print "big_name: ", c.big_name
приводит к извлечению журнала:
... INFO sqlalchemy.engine.base.Engine.0x...77d0 SELECT some_table.id AS some_table_id, some_table.name AS some_table_name
FROM some_table
LIMIT 1 OFFSET 0
... INFO sqlalchemy.engine.base.Engine.0x...77d0 SELECT some_table.big_name AS some_table_big_name
FROM some_table
WHERE some_table.id = ?
-121--4213388- Нет, сейчас это не поддерживаемый сценарий. Мы смотрели на это некоторое время, но обнаружили, что частота коллизий имен слишком высока для наших приложений, и наличие сглаженного имени сохранило полный контекст для того, откуда это значение.