This topic applies to .NET version only
There are different ways to prevent fields persistence in .NET:For example, let's create a FieldTransient attribute and mark it to prevent object persistence:
01/* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com */ 02
using System; 03
04
namespace Db4objects.Db4odoc.SelectivePersistence 05
{ 06
[AttributeUsage(AttributeTargets.Field)] 07
public class FieldTransient: Attribute 08
{ 09
} 10
}
1private static IConfiguration ConfigureTransient() 2
{ 3
IConfiguration configuration = Db4oFactory.NewConfiguration(); 4
configuration.MarkTransient("Db4objects.Db4odoc.SelectivePersistence.FieldTransient"); 5
return configuration; 6
}
1' Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com 2
Namespace Db4objects.Db4odoc.SelectivePersistence 3
<AttributeUsage(AttributeTargets.Field)> _ 4
Public Class FieldTransient 5
Inherits Attribute 6
End Class 7
End Namespace
1Public Shared Function ConfigureTransient() As IConfiguration 2
Dim configuration As IConfiguration = Db4oFactory.NewConfiguration() 3
configuration.MarkTransient("Db4objects.Db4odoc.SelectivePersistence.FieldTransient") 4
Return configuration 5
End Function
01/* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com */ 02
using System; 03
namespace Db4objects.Db4odoc.SelectivePersistence 04
{ 05
public class Test 06
{ 07
[Db4objects.Db4o.Transient] 08
// you can also use [NonSerializedAttribute] 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
}
01' Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com 02
Imports System 03
Imports Db4objects.Db4o 04
05
Namespace Db4objects.Db4odoc.SelectivePersistence 06
Public Class Test 07
<Transient()> Dim _transientField As String 08
' You can also use <NonSerialized()> Dim _transientField As String 09
' and mark the class <Serializable()> 10
Dim _persistentField As String 11
12
Public Sub New(ByVal transientField As String, ByVal persistentField As String) 13
_transientField = transientField 14
_persistentField = persistentField 15
End Sub 16
17
Public Overrides Function ToString() As String 18
Return "Test: persistent: " + _persistentField + ", transient: " + _transientField 19
End Function 20
End Class 21
End Namespace
01/* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com */ 02
namespace Db4objects.Db4odoc.SelectivePersistence 03
{ 04
public class TestCustomized 05
{ 06
[Db4objects.Db4odoc.SelectivePersistence.FieldTransient] 07
string _transientField; 08
string _persistentField; 09
10
public TestCustomized(string transientField, string persistentField) 11
{ 12
_transientField = transientField; 13
_persistentField = persistentField; 14
} 15
16
public override string ToString() 17
{ 18
return "Customized test: persistent: " + _persistentField + ", transient: " + _transientField ; 19
} 20
} 21
}
01' Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com 02
03
Namespace Db4objects.Db4odoc.SelectivePersistence 04
Public Class TestCusomized 05
<Db4objects.Db4odoc.SelectivePersistence.FieldTransient()> Dim _transientField As String 06
Dim _persistentField As String 07
08
Public Sub New(ByVal transientField As String, ByVal persistentField As String) 09
_transientField = transientField 10
_persistentField = persistentField 11
End Sub 12
13
Public Overrides Function ToString() As String 14
Return "Customized test: persistent: " + _persistentField + ", transient: " + _transientField 15
End Function 16
End Class 17
End Namespace
We will save and retrieve both Test and TestCustomized objects, having transient fields defined in different manner:
01private static void SaveObjects(IConfiguration configuration) 02
{ 03
File.Delete(Db4oFileName); 04
IObjectContainer container = Db4oFactory.OpenFile(configuration, Db4oFileName); 05
try 06
{ 07
Test test = new Test("Transient string","Persistent string"); 08
container.Set(test); 09
TestCustomized testc = new TestCustomized("Transient string","Persistent string"); 10
container.Set(testc); 11
} 12
finally 13
{ 14
container.Close(); 15
} 16
}
01private static void RetrieveObjects() 02
{ 03
IObjectContainer container = Db4oFactory.OpenFile(Db4oFileName); 04
try 05
{ 06
IQuery query = container.Query(); 07
query.Constrain(typeof(object)); 08
IList result = query.Execute(); 09
ListResult(result); 10
} 11
finally 12
{ 13
container.Close(); 14
} 15
}
01Public Shared Sub SaveObjects(ByVal configuration As IConfiguration) 02
File.Delete(Db4oFileName) 03
Dim container As IObjectContainer = Db4oFactory.OpenFile(configuration, Db4oFileName) 04
Try 05
Dim test As Test = New Test("Transient string", "Persistent string") 06
container.Set(test) 07
Dim testc As TestCusomized = New TestCusomized("Transient string", "Persistent string") 08
container.Set(testc) 09
Finally 10
container.Close() 11
End Try 12
End Sub
01Public Shared Sub RetrieveObjects() 02
Dim container As IObjectContainer = Db4oFactory.OpenFile(Db4oFileName) 03
Try 04
Dim query As IQuery = container.Query() 05
query.Constrain(GetType(Object)) 06
Dim result As IList = query.Execute() 07
ListResult(result) 08
Finally 09
container.Close() 10
End Try 11
End Sub