<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Directory%3ADataObjects.net</id>
	<title>Directory:DataObjects.net - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Directory%3ADataObjects.net"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Directory:DataObjects.net&amp;action=history"/>
	<updated>2026-06-15T13:40:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Directory:DataObjects.net&amp;diff=87273&amp;oldid=prev</id>
		<title>MyWikiBiz: De-bold some of lead</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Directory:DataObjects.net&amp;diff=87273&amp;oldid=prev"/>
		<updated>2009-05-29T01:19:23Z</updated>

		<summary type="html">&lt;p&gt;De-bold some of lead&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:19, 29 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l17&quot; &gt;Line 17:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 17:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DataObjects.Net is rapid database application development framework.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DataObjects.Net&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;is &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a &lt;/ins&gt;rapid database application development framework.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It combines comprehensive [[business logic layer]] (BLL) development framework, [[object-relational mapper]] (ORM) and a set of storage implementations enabling the same BLL code work ''everywhere'' reducing the resources and time you need to develop generally any application dealing with persistent data.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It combines comprehensive [[business logic layer]] (BLL) development framework, [[object-relational mapper]] (ORM) and a set of storage implementations enabling the same BLL code work ''everywhere'' reducing the resources and time you need to develop generally any application dealing with persistent data.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MyWikiBiz</name></author>
	</entry>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Directory:DataObjects.net&amp;diff=87262&amp;oldid=prev</id>
		<title>MyWikiBiz: New article, copied and modified under the terms of the GFDL from http://en.wikipedia.org, primary contributors lost in deletion</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Directory:DataObjects.net&amp;diff=87262&amp;oldid=prev"/>
		<updated>2009-05-28T21:00:19Z</updated>

		<summary type="html">&lt;p&gt;New article, copied and modified under the terms of the GFDL from http://en.wikipedia.org, primary contributors lost in deletion&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| logo                   = [[Image:DataObjects.Net.png]]&lt;br /&gt;
| name                   = DataObjects.Net&lt;br /&gt;
| developer              = [http://www.x-tensive.com X-tensive.com]&lt;br /&gt;
| latest release version = 4.0 beta&lt;br /&gt;
| latest release date    = {{release date|2009|05|02}}&lt;br /&gt;
| operating system       = [[Microsoft Windows]]&lt;br /&gt;
| latest preview version =&lt;br /&gt;
| latest preview date    =&lt;br /&gt;
| platform               = [[Microsoft .NET|.NET]] 3.5&lt;br /&gt;
| programming language   = [[C Sharp (programming language)|C#]]&lt;br /&gt;
| genre                  = [[Object-relational mapping]]&lt;br /&gt;
| license                = [[GNU_General_Public_License#&lt;br /&gt;
&lt;br /&gt;
Version_3|GNU v3]]&lt;br /&gt;
| website                = http://wiki.dataobjects.net/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''DataObjects.Net is rapid database application development framework.'''&lt;br /&gt;
&lt;br /&gt;
It combines comprehensive [[business logic layer]] (BLL) development framework, [[object-relational mapper]] (ORM) and a set of storage implementations enabling the same BLL code work ''everywhere'' reducing the resources and time you need to develop generally any application dealing with persistent data.&lt;br /&gt;
&lt;br /&gt;
Besides other features, DataObjects.Net has built-in [[embedded database]], so it can be used both with and without [[SQL]] database.&lt;br /&gt;
&lt;br /&gt;
DataObjects.Net is true [[open source]] product available under [[GPL]] and commercial licenses. The most current version is 4.0.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
First version of DataObjects.Net was initially designed in 2003 for use in rather special set of cases, mainly – in web-based document management systems. DataObjects.Net 1.0 was developed in ~9 months by a 3-person team. Many its limitations appeared just because authors didn’t though it will be practically useful in much wider set of cases. An example of such limitation is pre-defined type of identifier and version. Nevertheless its initial design was innovative for that period - in comparison to other persistence frameworks on the market. Finally the team of developers has made a decision to completely redesign it. This new implementation is known as DataObjects.Net v4.0.&lt;br /&gt;
&lt;br /&gt;
Works on DataObjects.Net v4.0 were started in the beginning of 2007. In September 2008 v4.0 was publicly shown for the first time, although some features ([[LINQ]], schema evolution) were missing in it yet. DataObjects.Net v4.0 final has been released in May 2009.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* '''Next level of storage independence.''' DataObjects.Net allows to transparently migrate between SQL database and index storages. This is the only OR/M framework supporting non-SQL databases at all.&lt;br /&gt;
* '''Designed for frictionless development''' of business logic layer (BLL) components providing modularity, reusability, testability for them.&lt;br /&gt;
* '''OR/M layer''' providing support for:&lt;br /&gt;
** '''Class mapping''': framework supports 3 common mapping strategies: class to table, class to concrete table, hierarchy to table. So inheritance is fully supported.&lt;br /&gt;
** '''Interface mapping''': DataObjects.Net is capable of mapping interfaces to materializing tables, as well as to ordinary tables, to which Entities implementing the interface are mapped. Materializing tables can be indexed.&lt;br /&gt;
** '''Structures''': struct-like objects that Entities may aggregate.&lt;br /&gt;
** '''Arbitrary primary key types''', combined primary keys&lt;br /&gt;
** '''Indexes'''&lt;br /&gt;
** '''[[LINQ]]'''.&lt;br /&gt;
* '''Mappings and other aspects of Domain model are described by attributes''', although it is possible to configure them using a special API. Mappings are established even if only basic attributes are applied.&lt;br /&gt;
* '''Framework automatically creates, and, if necessary, upgrades the schema''' on each Domain startup preserving all the data. The upgrade process is fully customizable.&lt;br /&gt;
* '''&amp;quot;Unit-of-work&amp;quot; pattern implementation''' and error compensation based on integrated Atomicity framework.&lt;br /&gt;
* '''Support for master-slave and P2P synchronization''' scenarios between storages running DataObjects.Net out of the box.&lt;br /&gt;
* '''High performance.''' The framework was initially designed for performance. For example, it intensively uses caching. In particular, query compilation and optimization results, compiled expressions, keys and fetched entities are cached.&lt;br /&gt;
* '''[[Embedded database]]''' supporting all the features listed above (indexes and including [[LINQ]]) allows to use the product without any SQL database at all.&lt;br /&gt;
* '''Relying on [[PostSharp]]''' while implementing persistent properties and overriding persistent object's behavior in [[AOP]] fashion.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
'''Persistent entity:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
[HierarchyRoot(typeof(KeyGenerator), &amp;quot;Id&amp;quot;)]&lt;br /&gt;
public class Message : Entity&lt;br /&gt;
{&lt;br /&gt;
 [Field]&lt;br /&gt;
 public int Id { get; private set; }&lt;br /&gt;
&lt;br /&gt;
 [Field(Length = 1024)]&lt;br /&gt;
 public string Text { get; set; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Confuguration:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Xtensive.Storage&amp;gt;&lt;br /&gt;
 &amp;lt;domains&amp;gt;&lt;br /&gt;
   &amp;lt;domain name=&amp;quot;memory&amp;quot; connectionUrl=&amp;quot;memory://localhost/Tests&amp;quot; upgradeMode=&amp;quot;Recreate&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;domain name=&amp;quot;mssql&amp;quot;  connectionUrl=&amp;quot;mssql2005://localhost/Tests&amp;quot; upgradeMode=&amp;quot;Recreate&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;domain name=&amp;quot;pgsql&amp;quot;  connectionUrl=&amp;quot;pgsql://tester:testpwd@localhost:8332/test?Encoding=ASCII&amp;quot; upgradeMode=&amp;quot;Recreate&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/domains&amp;gt;&lt;br /&gt;
&amp;lt;/Xtensive.Storage&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Building domain:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
var configuration = DomainConfiguration.Load(&amp;quot;mssql&amp;quot;);&lt;br /&gt;
configuration.Types.Register(typeof(Message).Assembly);&lt;br /&gt;
var domain = Domain.Build(configuration);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Creating entity:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
using (domain.OpenSession()) {&lt;br /&gt;
 using (var transactionScope = Transaction.Open()) {&lt;br /&gt;
   var message = new Message() {&lt;br /&gt;
     Text = &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
   };&lt;br /&gt;
   transactionScope.Complete();&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Query:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
using (domain.OpenSession()) {&lt;br /&gt;
 using (var transactionScope = Transaction.Open()) {&lt;br /&gt;
   // This query will be translated to ~ SELECT ... WHERE message.Text LIKE &amp;quot;Hello%&amp;quot;&lt;br /&gt;
   var helloMessages =&lt;br /&gt;
     from message in Query&amp;lt;Message&amp;gt;.All&lt;br /&gt;
     where message.Text.StartsWith(&amp;quot;Hello&amp;quot;)&lt;br /&gt;
     select message;&lt;br /&gt;
   foreach (var message in helloMessages) // Actual execution happens here&lt;br /&gt;
     Console.WriteLine(message.Text);     // Prints &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
   transactionScope.Complete();&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
[[Image:DataObjects.Net Framework Architecture.png]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.x-tensive.com/Products/DO DataObjects.Net Product Page]&lt;br /&gt;
* [http://wiki.dataobjects.net DataObjects.Net Wiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:.Net Object-relational mapping tools]]&lt;br /&gt;
[[Category:.NET programming tools]]&lt;/div&gt;</summary>
		<author><name>MyWikiBiz</name></author>
	</entry>
</feed>