Transient Fields In .NET

This topic applies to .NET version only

There are different ways to prevent fields persistence in .NET:

MarkTransientExample.cs: ConfigureTransient
1public static void ConfigureTransient() 2 { 3 Db4oFactory.Configure().MarkTransient("Db4objects.Db4odoc.SelectivePersistence.FieldTransient"); 4 }

MarkTransientExample.vb: ConfigureTransient
1Public Shared Sub ConfigureTransient() 2 Db4oFactory.Configure().MarkTransient("Db4objects.Db4odoc.SelectivePersistence.FieldTransient") 3 End Sub

Both methods will give you equal results:

Test.cs
01/* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com */ 02using System; 03 04namespace Db4objects.Db4odoc.SelectivePersistence 05{ 06 public class Test 07 { 08 [Db4objects.Db4o.Transient] 09 string _transientField; 10 string _persistentField; 11 12 public Test(string transientField, string persistentField) 13 { 14 _transientField = transientField; 15 _persistentField = persistentField; 16 } 17 18 public override String ToString() 19 { 20 return "Test: persistent: " + _persistentField + ", transient: " + _transientField ; 21 } 22 } 23}

Test.vb
01' Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com 02Imports System 03Imports Db4objects.Db4o 04 05Namespace Db4objects.Db4odoc.SelectivePersistence 06 Public Class Test 07 <Transient()> Dim _transientField As String 08 Dim _persistentField As String 09 10 Public Sub New(ByVal transientField As String, ByVal persistentField As String) 11 _transientField = transientField 12 _persistentField = persistentField 13 End Sub 14 15 Public Overrides Function ToString() As String 16 Return "Test: persistent: " + _persistentField + ", transient: " + _transientField 17 End Function 18 End Class 19End Namespace

FieldTransient.cs
01/* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com */ 02using System; 03 04namespace Db4objects.Db4odoc.SelectivePersistence 05{ 06 [AttributeUsage(AttributeTargets.Field)] 07 public class FieldTransient: Attribute 08 { 09 } 10}

FieldTransient.vb
1' Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com 2Imports System 3 4Namespace Db4objects.Db4odoc.SelectivePersistence 5 <AttributeUsage(AttributeTargets.Field)> _ 6 Public Class FieldTransient 7 Inherits Attribute 8 End Class 9End Namespace

TestCustomized.cs
01/* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com */ 02using System; 03 04namespace Db4objects.Db4odoc.SelectivePersistence 05{ 06 public class TestCusomized 07 { 08 [Db4objects.Db4odoc.SelectivePersistence.FieldTransient] 09 string _transientField; 10 string _persistentField; 11 12 public TestCusomized(string transientField, string persistentField) 13 { 14 _transientField = transientField; 15 _persistentField = persistentField; 16 } 17 18 public override String ToString() 19 { 20 return "Customized test: persistent: " + _persistentField + ", transient: " + _transientField ; 21 } 22 } 23}

TestCustomized.vb
01' Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com 02Imports System 03 04Namespace Db4objects.Db4odoc.SelectivePersistence 05 Public Class TestCusomized 06 <Db4objects.Db4odoc.SelectivePersistence.FieldTransient()> Dim _transientField As String 07 Dim _persistentField As String 08 09 Public Sub New(ByVal transientField As String, ByVal persistentField As String) 10 _transientField = transientField 11 _persistentField = persistentField 12 End Sub 13 14 Public Overrides Function ToString() As String 15 Return "Customized test: persistent: " + _persistentField + ", transient: " + _transientField 16 End Function 17 End Class 18End Namespace

Let's now check the results:

MarkTransientExample.cs: SaveObjects
01public static void SaveObjects() 02 { 03 File.Delete(YapFileName); 04 IObjectContainer oc = Db4oFactory.OpenFile(YapFileName); 05 try 06 { 07 Test test = new Test("Transient string","Persistent string"); 08 oc.Set(test); 09 TestCusomized testc = new TestCusomized("Transient string","Persistent string"); 10 oc.Set(testc); 11 } 12 finally 13 { 14 oc.Close(); 15 } 16 }

MarkTransientExample.vb: SaveObjects
01Public Shared Sub SaveObjects() 02 File.Delete(YapFileName) 03 Dim oc As IObjectContainer = Db4oFactory.OpenFile(YapFileName) 04 Try 05 Dim test As Test = New Test("Transient string", "Persistent string") 06 oc.Set(test) 07 Dim testc As TestCusomized = New TestCusomized("Transient string", "Persistent string") 08 oc.Set(testc) 09 Finally 10 oc.Close() 11 End Try 12 End Sub

MarkTransientExample.cs: RetrieveObjects
01public static void RetrieveObjects() 02 { 03 IObjectContainer oc = Db4oFactory.OpenFile(YapFileName); 04 try 05 { 06 IQuery query = oc.Query(); 07 query.Constrain(typeof(object)); 08 IList result = query.Execute(); 09 ListResult(result); 10 } 11 finally 12 { 13 oc.Close(); 14 } 15 }

MarkTransientExample.vb: RetrieveObjects
01Public Shared Sub RetrieveObjects() 02 Dim oc As IObjectContainer = Db4oFactory.OpenFile(YapFileName) 03 Try 04 Dim query As IQuery = oc.Query() 05 query.Constrain(GetType(Object)) 06 Dim result As IList = query.Execute() 07 ListResult(result) 08 Finally 09 oc.Close() 10 End Try 11 End Sub