Example #1
0
    public static void Main(string[] args)
    {
        var retained = Create <Retained>(7);

        var owner1 = new Owner1(retained[0], retained[1], retained[2], retained[5], retained[6]);
        var owner2 = new Owner2(retained[3], retained[4], retained[5], retained[6]);

        retained = null;

        ProfilingApi.GetSnapshot();

        GC.KeepAlive(owner1);
        GC.KeepAlive(owner2);
    }
        public void UpdateVersionWithManyRootsTest()
        {
            Key         owner1Key;
            VersionInfo owner1Version;
            Key         owner2Key;
            VersionInfo owner2Version;
            Key         itemKey;
            VersionInfo itemVersion;

            using (var session = Domain.OpenSession()) {
                using (var transactionScope = session.OpenTransaction()) {
                    var owner1 = new Owner1();
                    var owner2 = new Owner2();
                    var item   = new Item {
                        Value = "Value"
                    };
                    owner1Key     = owner1.Key;
                    owner2Key     = owner2.Key;
                    owner1Version = owner1.VersionInfo;
                    owner2Version = owner2.VersionInfo;
                    itemKey       = item.Key;
                    itemVersion   = item.VersionInfo;
                    transactionScope.Complete();
                }
            }
            using (var session = Domain.OpenSession()) {
                using (var transactionScope = session.OpenTransaction()) {
                    var owner1 = session.Query.Single <Owner1>(owner1Key);
                    var owner2 = session.Query.Single <Owner2>(owner2Key);
                    var item   = session.Query.Single <Item>(itemKey);
                    Assert.IsTrue(owner1Version == owner1.VersionInfo);
                    Assert.IsTrue(owner2Version == owner2.VersionInfo);
                    Assert.IsTrue(itemVersion == item.VersionInfo);
                    item.Value = "New Value";
                    Assert.IsFalse(owner1Version == owner1.VersionInfo);
                    Assert.IsFalse(owner2Version == owner2.VersionInfo);
                    Assert.IsFalse(itemVersion == item.VersionInfo);
                    transactionScope.Complete();
                }
            }
        }
        public void SerializeVersionInfoTest()
        {
            VersionInfo itemVersion;

            using (var session = Domain.OpenSession()) {
                using (var transactionScope = session.OpenTransaction()) {
                    var owner1 = new Owner1();
                    var owner2 = new Owner2();
                    var item   = new Item {
                        Value = "Value"
                    };
                    itemVersion = item.VersionInfo;
                    transactionScope.Complete();
                }
            }
            Assert.IsFalse(itemVersion.IsVoid);
            var clone = Cloner.Clone(itemVersion);

            Assert.IsFalse(clone.IsVoid);
            Assert.IsTrue(itemVersion == clone);
        }