Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
644f3ab
No change allowed during active persisting
alex-kulakov Jun 1, 2022
f91b6c5
Registry-level changes prevention
alex-kulakov Jun 6, 2022
61e4d88
New SessionBoundRegistry class + its ancestrors moved to separate folder
alex-kulakov Jun 14, 2022
18aa7b5
Some registries refactored
alex-kulakov Jun 14, 2022
7a7eaee
Rename session registries folder
alex-kulakov Nov 5, 2025
f41ea5e
Merge branch 'master' into master-no-changes-during-persist
alex-kulakov Nov 5, 2025
d7c9eda
Tests for data loss prevention
alex-kulakov Nov 10, 2025
9cf2204
SessionEventsTest improved
alex-kulakov Nov 10, 2025
d853247
SessionBound registry improvements
alex-kulakov Nov 10, 2025
24b3b5d
Events which can cause data loss are executed in context of disabled …
alex-kulakov Nov 10, 2025
14de660
Updated files summaries
alex-kulakov Nov 10, 2025
baa9eb2
Exclude System events from ones that prohibits persistent objects cha…
alex-kulakov Nov 11, 2025
cd67ce7
SessionBoundRegistry changes
alex-kulakov Nov 11, 2025
a168bfc
Fix broken build
alex-kulakov Nov 11, 2025
64c4e06
Tests handle changes from baa9eb2
alex-kulakov Nov 11, 2025
09a4e76
Improve changelog
alex-kulakov Nov 12, 2025
e3abcdc
Merge branch 'master' into master-no-changes-during-persist
alex-kulakov Nov 12, 2025
06d2b5a
HintGenerator small improvements
alex-kulakov Dec 25, 2024
e0d4745
Merge pull request #446 from DataObjects-NET/master-no-changes-during…
alex-kulakov Nov 16, 2025
338ee5f
Merge branch 'master' into master-upgrade-small-imps
alex-kulakov Nov 16, 2025
70d3ab4
Improve changlog
alex-kulakov Nov 16, 2025
1a2bb5d
Reconsider initial collection sizes
alex-kulakov Nov 16, 2025
31dac53
Merge pull request #447 from DataObjects-NET/master-upgrade-small-imps
alex-kulakov Nov 16, 2025
9c64581
Bump version to 7.2.0 Final
alex-kulakov Nov 16, 2025
686e8c7
Merge remote-tracking branch 'upstream/master' into mergeUpstream
SergeiPavlov Nov 17, 2025
2d0043a
Fix test
SergeiPavlov Nov 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ChangeLog/7.2.0-Z_Final.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[main] Changes of Persistent objects in events Persisted/TransactionCommitting/TransactionCommitted became prohibited to prevent possible loss of changes
[main] Memory efficiency and performance improvements of upgrade process
[postgresql] Server-side statement timeout handled as TimeoutException
1 change: 0 additions & 1 deletion ChangeLog/7.2.0-dev.txt

This file was deleted.

Large diffs are not rendered by default.

109 changes: 109 additions & 0 deletions Orm/Xtensive.Orm.Tests/Storage/DataLossOnEventsPrevention/Models.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
// Copyright (C) 2025 Xtensive LLC.
// This code is distributed under MIT license terms.
// See the License.txt file in the project root for more information.

namespace Xtensive.Orm.Tests.Storage.DataLossOnEventsPrevention.EntityChangeDuringPersistTestModel
{
public abstract class TestBoundEntity : Entity
{
[Field, Key]
public int Id { get; private set; }

[Field]
public string TestIdentifier { get; private set; }

public TestBoundEntity(Session session, string testIdentifier)
: base(session)
{
TestIdentifier = testIdentifier;
}
}

[HierarchyRoot]
public class SimpleEntity : TestBoundEntity
{
[Field]
public int Value { get; set; }

public SimpleEntity(Session session, string testIdentifier)
: base(session, testIdentifier)
{
}
}

[HierarchyRoot]
public class NonPairedEntitySetContainer : TestBoundEntity
{
[Field]
public EntitySet<RefEntity> Refs { get; private set; }

public NonPairedEntitySetContainer(Session session, string testIdentifier)
: base(session, testIdentifier)
{
}
}

[HierarchyRoot]
public class RefEntity : TestBoundEntity
{
[Field]
public int Value { get; set; }

public RefEntity(Session session, string testIdentifier)
: base(session, testIdentifier)
{
}
}

[HierarchyRoot]
public class PairedEntitySetContainer : TestBoundEntity
{
[Field]
[Association(PairTo = nameof(PairedRefEntity.Container))]
public EntitySet<PairedRefEntity> Refs { get; private set; }

public PairedEntitySetContainer(Session session, string testIdentifier)
: base(session, testIdentifier)
{
}
}

[HierarchyRoot]
public class PairedRefEntity : TestBoundEntity
{
[Field]
public PairedEntitySetContainer Container { get; set; }

[Field]
public int Value { get; set; }

public PairedRefEntity(Session session, string testIdentifier)
: base(session, testIdentifier)
{
}
}

[HierarchyRoot]
public class NonPairedReferencingEntity : TestBoundEntity
{
[Field]
public NonPairedReferencedEntity Ref { get; set; }

public NonPairedReferencingEntity(Session session, string testIdentifier)
: base(session, testIdentifier)
{
}
}

[HierarchyRoot]
public class NonPairedReferencedEntity : TestBoundEntity
{
[Field]
public int Value { get; set; }

public NonPairedReferencedEntity(Session session, string testIdentifier)
: base(session, testIdentifier)
{
}
}
}

Large diffs are not rendered by default.

Loading
Loading