We discovered a serious issue connected to entity saving to storage for providers that use batching. Though its appearance is rare, version update is strongly recommended.
Minimal versions in which the issue is addressed: 6.0.12, 7.0.4, 7.1.1, 7.2.0
The master branch also has the fix merged (commit f642a25).
If you forked the repository then make sure that this fix will propagate to your fork and branches.
DataObjects.Net is a persistence and object-relational mapping framework for the Microsoft .NET. It allows developers to define persistent objects as well as business logic directly in C#, Visual Basic or F#. The persistent objects can be retrieved by LINQ queries. Persistent data can be stored in SQL Servers. In contrast to many other ORM frameworks the database model is generated and maintained automatically.
Supported databases:
- MS SQL Server 2016, 2017, 2019, 2022
- MS Azure SQL Database
- Oracle 10g, 11g
- PostgreSQL 11, 12, 13, 14, 15, 16, 17, 18
- MySQL 5.7, 8.x, 9.x
- Firebird 3.0, 4.0, 5.0
- Sqlite 3
DataObjects.Net is available on Nuget. Install main package (NOTE this package does not include any providers, install needed provider addtionally)
dotnet add package Xtensive.OrmProviders for MS SQL Server, Oracle, PostgreSQL, Mysql, Firebird and SQLite may be installed following way
dotnet add package Xtensive.Orm.SqlServerdotnet add package Xtensive.Orm.Oracledotnet add package Xtensive.Orm.PostgreSQLdotnet add package Xtensive.Orm.MySqldotnet add package Xtensive.Orm.Firebirddotnet add package Xtensive.Orm.SqliteDataObjects.Net extensions are available on Nuget as well (more about extensions here)
dotnet add package Xtensive.Orm.BulkOperationsdotnet add package Xtensive.Orm.Localizationdotnet add package Xtensive.Orm.Logging.log4netdotnet add package Xtensive.Orm.Reprocessingdotnet add package Xtensive.Orm.Securitydotnet add package Xtensive.Orm.Trackingdotnet add package Xtensive.Orm.WebUse the --version option to specify version to install
The following code demonstrates basic usage of DataObjects.Net. For full tutorial configuring Domain, defining the model and querying data see our documentation.
// create configuration with connection to Tests database on local instance of MS SQL ServervardomainConfiguration=newDomainConfiguration(@"sqlserver://localhost/Tests");// register types from certain domaindomainConfiguration.Types.Register(typeof(Person).Assembly,typeof(Person).Namespace);// create database structure from scratchdomainConfiguration.UpgradeMode=DomainUpgradeMode.Recreate;// on application start build Domainvardomain=Domain.Build(domainConfiguration);// open a session to databaseusing(varsession=domain.OpenSession()){using(vartransactionScope=session.OpenTransaction()){// query for existing Anton ChekhovAuthorexistingAuthor=session.Query.All<Author>().Where(author =>author.FirstName=="Anton"&&author.LastName=="Chekhov").FirstOrDefault();//if Anton Pavlovich isn't in database yet then and himif(existingAuthor==null){existingAuthor=new new Author(session){FirstName="Anton",LastName="Chekhov";}}// add new book and assign it with Anton ChekhovexistingAuthor.Books.Add(newBook(session){Title="The Cherry Orchard"});// commit opened transaction to save changes made within ittransactionScope.Complete();}}// on application shutdown dispose existing domaindomain.Dispose()If you have a specific question about using DataObjects.Net you can ask on our support forum or send your question to [email protected].
Repository contains one solution file - Orm
This solution contains Weaver project responsible for post-build processing of assemblies containing inheritors of Xtensive.Orm.Persistent class. Weaver project is first in build sequence. Other projects in the solution include DataObjects.Net itself as well as its extensions and tests.
In order to build project binaries one need to execute the dotnet build command in the solution folder. It will build everything in Debug configuration. In case Release binaries are needed just specify configuration parameter as following
dotnet build -c ReleaseBy defuault Debug configuration build doesn't generate Nuget packages but Release configuration build does. It is possible to change this default behavior by specifying GeneratePackageOnBuild parameter explicitly. So in case Nuget packages aren't needed for release build consider to run
dotnet build -c Release /p:GeneratePackageOnBuild=falsealternatively the following command will generate packages for Debug build
dotnet build /p:GeneratePackageOnBuild=trueBuild results are available in the _Build subdirectory of solution folder.
Version.props file declares version is building. <DoVersion> tag defiles version in <Major version>.<Minor version>.<Revision> format. Do not define Build number, it is defined while building. <DoVersionSuffix> should be defined for pre-release versions like Alphas, Betas, and RCs.
DataObjects.Net and its extensions published here are licensed under the MIT license.