mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-18 14:42:01 -04:00
- extra merge test
- merge with dont_load also propagates _state.modified
This commit is contained in:
@@ -292,7 +292,6 @@ class PropertyLoader(StrategizedProperty):
|
||||
for current in list(childlist):
|
||||
obj = session.merge(current, entity_name=self.mapper.entity_name, dont_load=dont_load, _recursive=_recursive)
|
||||
if obj is not None:
|
||||
#dest_list.append_without_event(obj)
|
||||
dest_list.append_with_event(obj)
|
||||
else:
|
||||
current = list(childlist)[0]
|
||||
|
||||
@@ -879,6 +879,8 @@ class Session(object):
|
||||
raise exceptions.AssertionError("Instance %s has an instance key but is not persisted" % mapperutil.instance_str(object))
|
||||
for prop in mapper.iterate_properties:
|
||||
prop.merge(self, object, merged, dont_load, _recursive)
|
||||
if dont_load:
|
||||
merged._state.modified = object._state.modified
|
||||
if key is None:
|
||||
self.save(merged, entity_name=mapper.entity_name)
|
||||
return merged
|
||||
|
||||
@@ -117,6 +117,17 @@ class MergeTest(AssertMixin):
|
||||
# no changes; therefore flush should do nothing
|
||||
self.assert_sql_count(testbase.db, go, 0)
|
||||
|
||||
# pre merge change
|
||||
u.user_name='fred3'
|
||||
sess4 = create_session()
|
||||
u = sess4.merge(u, dont_load=True)
|
||||
# post merge change
|
||||
u.addresses[1].email_address='afafds'
|
||||
def go():
|
||||
sess4.flush()
|
||||
# changes still flush
|
||||
self.assert_sql_count(testbase.db, go, 2)
|
||||
|
||||
def test_saved_cascade_2(self):
|
||||
"""tests a more involved merge"""
|
||||
mapper(Order, orders, properties={
|
||||
|
||||
Reference in New Issue
Block a user