Menu

Tree [fb2b84] master /
 History

HTTPS access


File Date Author Commit
 BenchmarkCRUD 2023-03-03 Bruce Bruce [fdd389] i391
 DataStoreXPO 2023-03-03 Bruce Bruce [315497] 391
 DataStoreXPOCore 2023-03-03 Bruce Bruce [fdd389] i391
 XPOfficialTutorials 2023-03-03 Bruce Bruce [fdd389] i391
 .gitignore 2022-06-30 Bruce Bruce [e79266] 3.5
 Readme.md 2023-03-07 Bruce Bruce [fb2b84] rm

Read Me

Integrating iBoxDB with SQL ORM -XPO

DevExpress XPO Data Store Adapter.

Getting Started

// Dotnet Core 
cd DataStoreXPOCore

dotnet run -c Release

Benchmark

$ tracker daemon -k

// Dotnet Core
cd BenchmarkCRUD

dotnet run -c Release

How to import

Copy source code in DataStoreXPO/Code to the project.
or add an ItemGroup to .csproj

  <ItemGroup>
    <Compile Include="..\DataStoreXPO\Code\*.cs" /> 
 </ItemGroup>

Use CreateThreadSafeDataLayer to create IDataLayer

  XpoDefault.DataLayer = IBoxDBDataStore.CreateThreadSafeDataLayer(1, path);

Set Base Class to NonPersistent for fast CRUD

    [NonPersistent]
    public class TBase : XPObject
    {
        public TBase(Session s) : base(s) { }
    }

    public class TMyObject : TBase
    {
        public TMyObject(Session s) : base(s) { }
    }

IDE

Use MonoDevelop to Open /DataStoreXPO/, Tested on CentOS7 Linux

Project-Packages-Restore
Project-Options-Run-Default- Uncheck("Run as external console").

Run - Start without Debugging

Compile

if can't compile,

reinstall nuget packages: iBoxDB and DevExpress.Xpo.

and Restrt IDE.

  <ItemGroup>
    <PackageReference Include="iBoxDB" Version="3.9.1" />
    <PackageReference Include="DevExpress.Xpo" Version="22.2.4" />
  </ItemGroup> 

Remove Nullable setup in .csproj (optional)

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <!--
    <Nullable>disable</Nullable>
    -->
    <Nowarn>CS2002</Nowarn>
  </PropertyGroup>

or Compile the SourceCode to Assembly(DLL) before importing to the project.
(null) is a condition to control the workflow in complex SQL analysis.
and it can help the Application 400% faster.

dotnet run -c Release

18:SpeedNullableTest.cs , Run(); 
Null Test, if (testObj != null)
Count:2147483647, Time:891.1399

31:SpeedNullableTest.cs , Run(); 
Not Null Test, if (testObj != String.Empty)
Count:2147483647, Time:3458.771

Issues

About Join Count 1

use (ToList().Count) or add [not is null] condition (where obj != null)

Not all Linq can be translated into SQL.

For high performance applications, to use iBoxDB engine directly.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.