xpo-devexpress-dot-xpo-dot-session-54cb528c.md
Gets the pre-initialized default session for simple applications.
Namespace : DevExpress.Xpo
Assembly : DevExpress.Xpo.v25.2.dll
NuGet Package : DevExpress.Xpo
public static Session DefaultSession { get; }
Public Shared ReadOnly Property DefaultSession As Session
| Type | Description |
|---|---|
| Session |
A Session object which is the default session.
|
This property returns the XpoDefault.Session property value.
The following example demonstrates how to work with transactions.
In this example, the transaction begins when a persistent object is saved. The Session.BeginTransaction method marks the starting point of the transaction. If the value of the persistent object’s Amount property is negative, the Session.RollbackTransaction method is called which completes the transaction discarding all the changes made since the transaction was started.
Otherwise, if the Amount property’s value isn’t negative, the Session.CommitTransaction method is called to complete the transaction and save all the data modifications made.
using System;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
namespace ConsoleApplication1 {
class Account : XPObject {
public const double DefaultAmount = 100;
private double amount = DefaultAmount;
public Account(Session session) : base(session) { }
public double Amount {
get { return amount; }
set { SetPropertyValue<double>(nameof(Amount), ref amount, value); }
}
protected override void OnSaving() {
base.OnSaving();
if (!IsDeleted) {
if (Amount < 0) {
throw new Exception("Negative amount!");
}
}
}
}
class Program {
static void Main(string[] args) {
string connectionString = MSSqlConnectionProvider.GetConnectionString("(local)", "ConsoleApplication1");
XpoDefault.DataLayer = XpoDefault.GetDataLayer(connectionString, AutoCreateOption.DatabaseAndSchema);
TransferAmount(100);
TransferAmount(200);
Console.WriteLine("Press <Enter> to exit");
Console.ReadLine();
}
static void TransferAmount(double amount) {
using (Session session = new Session()) {
Console.WriteLine("Creating Account1 with amount = " + Account.DefaultAmount);
Account account1 = new Account(session);
account1.Save();
Console.WriteLine("Creating Account2 with amount = " + Account.DefaultAmount);
Account account2 = new Account(session);
account2.Save();
Console.WriteLine("");
Console.WriteLine("Beginning the transaction...");
session.BeginTransaction();
try {
Console.WriteLine(String.Format(" Withdrawing {0} from Account1", amount));
account1.Amount -= amount;
account1.Save();
Console.WriteLine(String.Format(" Transferring {0} to Account2", amount));
account2.Amount += amount;
account2.Save();
Console.WriteLine("Committing the transaction...");
session.CommitTransaction();
}
catch (Exception e) {
Console.WriteLine("Exception message: " + e.Message);
Console.WriteLine("Rolling back the transaction");
session.RollbackTransaction();
Console.WriteLine("Reloading the accounts from database...");
account1.Reload();
account2.Reload();
}
Console.WriteLine("Account1 amount: " + account1.Amount);
Console.WriteLine("Account2 amount: " + account2.Amount);
Console.WriteLine();
}
}
}
}
Imports System
Imports DevExpress.Xpo
Imports DevExpress.Xpo.DB
Namespace ConsoleApplication1
Friend Class Account
Inherits XPObject
Public Const DefaultAmount As Double = 100
Private _amount As Double = DefaultAmount
Public Sub New(ByVal session As Session)
MyBase.New(session)
End Sub
Public Property Amount() As Double
Get
Return _amount
End Get
Set(ByVal value As Double)
SetPropertyValue(Of Double)(NameOf(Amount), _amount, value)
End Set
End Property
Protected Overrides Sub OnSaving()
MyBase.OnSaving()
If Not IsDeleted Then
If Amount < 0 Then
Throw New Exception("Negative amount!")
End If
End If
End Sub
End Class
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim connectionString As String = MSSqlConnectionProvider.GetConnectionString("(local)", "ConsoleApplication1")
XpoDefault.DataLayer = XpoDefault.GetDataLayer(connectionString, AutoCreateOption.DatabaseAndSchema)
TransferAmount(100)
TransferAmount(200)
Console.WriteLine("Press <Enter> to exit")
Console.ReadLine()
End Sub
Private Shared Sub TransferAmount(ByVal amount As Double)
Using session As New Session()
Console.WriteLine("Creating Account1 with amount = " & Account.DefaultAmount)
Dim account1 As New Account(session)
account1.Save()
Console.WriteLine("Creating Account2 with amount = " & Account.DefaultAmount)
Dim account2 As New Account(session)
account2.Save()
Console.WriteLine("")
Console.WriteLine("Beginning the transaction...")
session.BeginTransaction()
Try
Console.WriteLine(String.Format(" Withdrawing {0} from Account1", amount))
account1.Amount -= amount
account1.Save()
Console.WriteLine(String.Format(" Transferring {0} to Account2", amount))
account2.Amount += amount
account2.Save()
Console.WriteLine("Committing the transaction...")
session.CommitTransaction()
Catch e As Exception
Console.WriteLine("Exception message: " & e.Message)
Console.WriteLine("Rolling back the transaction")
session.RollbackTransaction()
Console.WriteLine("Reloading the accounts from database...")
account1.Reload()
account2.Reload()
End Try
Console.WriteLine("Account1 amount: " & account1.Amount)
Console.WriteLine("Account2 amount: " & account2.Amount)
Console.WriteLine()
End Using
End Sub
End Class
End Namespace
The following code snippets (auto-collected from DevExpress Examples) contain references to the DefaultSession property.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.
winforms-filtercontrol-implement-ifilteredcomponent/CS/Q200298/Northwind.cs#L28
public Categories(Session session) : base(session) { }
public Categories() : base(Session.DefaultSession) { }
public override void AfterConstruction() { base.AfterConstruction(); }
public Categories(Session session) : base(session) { }
public Categories() : this(Session.DefaultSession) { }
}
public Products(Session session) : base(session) { }
public Products() : base(Session.DefaultSession) { }
public override void AfterConstruction() { base.AfterConstruction(); }
winforms-grid-edit-row-server-mode/CS/BindingListForServerMode/ServerSideGridTest.cs#L38
public ServerSideGridTest(Session session) : base(session) { }
public ServerSideGridTest() : base(Session.DefaultSession) { }
public override void AfterConstruction() { base.AfterConstruction(); }
customer.CreateMember("Orders", typeof(XPCollection), true, new Attribute[] { a });
gridControl1.DataSource = new XPCollection(Session.DefaultSession, customer);
Public Sub New()
MyBase.New(Session.DefaultSession)
End Sub
winforms-filtercontrol-implement-ifilteredcomponent/VB/Q200298/Northwind.vb#L60
Public Sub New()
MyBase.New(Session.DefaultSession)
End Sub
Public Sub New()
MyBase.New(Session.DefaultSession)
End Sub
winforms-grid-edit-row-server-mode/VB/BindingListForServerMode/ServerSideGridTest.vb#L67
Public Sub New()
MyBase.New(Session.DefaultSession)
End Sub
customer.CreateMember("Orders", GetType(XPCollection), True, New Attribute() { a })
gridControl1.DataSource = New XPCollection(Session.DefaultSession, customer)
See Also