.NET Data Access Layer

$ 99.91


"Take the shortcut to data access, saves you hours (or even days) of work and with the assurance of compile time data type checking, no more runtime errors!"

Martin Hart
Memory Soft

Knight Data Access Layer is the swiss army knife of Object Relational Mapping, Data Access, and LINQ. A key differentiator is the ability to automatically map from classes to tables without any mapping files, attributes, visual models, or convention definitions. The auto mapper can also map SQL and stored procedure results to classes without any mapping definition. When properties and database columns are named differently; mapping can be defined using attributes, code, or XML Mapping files. Auto increment primary keys, GUID primary keys, and composite keys are supported. Mappings can even be overridden at run time.

Knight Data Access Layer is compatible with SQL Server, Oracle, MySQL Firebird, SQLite, VistaDB, Microsoft Access, PostgreSQL, or any ODBC or OLEDB compliant database. Custom database providers can be easily implemented.

There is no need to revert to ADO.NET as everything can be executed within the library. Typical operations are supported such as creating databases, creating tables, executing stored procedures, truncating tables, and executing straight SQL.

LINQ is fully supported for any select operations including: aggregate, union, skip, take and much more. Knight Data Access Layer supports LINQ to SQL Server, LINQ to Oracle, LINQ to MySql, LINQ to Sqlite, LINQ to VistaDb, LINQ to Firebird, LINQ to PostgreSQL, and LINQ to Microsoft Access.

Code First Approach, Database First Approach, and No Approach (DataTables and Dictionaries) are all supported. Several generation features are included such as creating classes from tables, creating tables from classes, synchronizing namespaces to a database, generating table scripts, and generating upgrade scripts.

Knight Data Access Layer is SDLC Environmental friendly. Mappings for Schema/Owner plus table names can be switched on the fly at run time. This is useful for switching to a different test environment, switching to use staging tables, or switching to use archive versions of tables.

Common patterns are built in such as Unit of Work Pattern, Active Record Pattern, Repository Pattern, and Session Factory

It supports all .NET project types including .NET Framework .NET Core, Mono, Xamarin iOS, Xamarin Mac, Xamarin Android, UWP, Unity, .NET 5, and .NET 6. It can be used with any .NET language including VB.NET and C#. Download the full list of features.

While it can be purchased separately, this product is also included in the Gold Suite. Gold Suite subscribers receive all product updates and all new products as part of a yearly subscription. It is the best value in the industry.


Business Benefits

Benefit Description
Saves Time Easily store and retrieve items to databases. Development takes less time than any other data access framework.
Saves Money 90% of the cost of most projects is maintenance. Developers that use Knight Data Access Layer will write less code. Less code to maintain means greater productivity.
Flexible A variety of options allows Knight Data Access Layer to interact with your database how your developers want to work.
High Performance Knight Data Access Layer supports servers with multiple CPUS and cores. It creates clean, high performance SQL that interacts with your database.
It will work in your environment Knight Data Access Layer can easily switch from Development, Test, User Acceptance Testing, and Production environments.
Documentation Industry standard formatted help and an easy to use demo is included.
Royalty Free Distribution Include with any .NET project royalty free.
1 Year Free Upgrades Purchase today and all upgrades are free for the next year.
60 Day Money Back Guarantee At Kellerman Software, we want you to be totally satisfied with your purchase. Receive a refund within 60 days when ordering from KellermanSoftware.com. Source code versions are non-refundable due to their nature.
Lifetime Support Lifetime E-mail technical support is included.

How does the .NET Data Access Layer stack up against the competition?

Download In Excel

Download a free 30 day trial today.

  • Full working version
  • Includes technical support
  • Compatible with Windows, macOS, Linux, iOS, Android and Docker.
  • Compatible with .NET Framework 4.0 and higher, .NET Core 2.0 and higher, Mono 5.4 and higher, Xamarin.iOS 10.14 and higher, Xamarin.Mac 3.8 and higher, Xamarin.Android 8.0 and higher, Universal Windows Platform 10.0.16299 and higher, Unity 2018.1 and higher, .NET 5, and .NET 6.

Download Options

Knight Data Access Layer requires the following system configuration.

  • Compatible with Windows, macOS, Linux, iOS, Android and Docker.
  • Compatible with .NET Framework 4.0 and higher, .NET Core 2.0 and higher, Mono 5.4 and higher, Xamarin.iOS 10.14 and higher, Xamarin.Mac 3.8 and higher, Xamarin.Android 8.0 and higher, Universal Windows Platform 10.0.16299 and higher, Unity 2018.1 and higher, .NET 5, and .NET 6.

See the Quick Start Topic in the help file.  Here is a super simple example to connect to Microsoft Access:


//Setup the provider
MsAccessProvider provider = new MsAccessProvider();
provider.ConnectionString = "Enter your connection string";
//Manually instantiate a session
DataHelper db = new DataHelper(provider);
//Create the database if it does not exist (uses the database specified in the connection string)
//Create tables if they do not exist for a namespace
//Add columns that do not exist for corresponding classes
//Save a record
Customer customer = new Customer();
customer.Name = "John Smith";
//Load By Primary Key
Customer customer = db.LoadByPrimaryKey<Customer>(1);
//Loading with Parents and Children
Customer customer = db.LoadWithChildren<Customer>(1);
//Loading with a LINQ expression
Customer customer = db.CreateQuery<Customer>().FirstOrDefault(o => o.CustomerId == 1);
List<Customer> customerList = db.CreateQuery<Customer>().Where(o => o.Name == "John Smith").ToList();

Q: How do I use my license key?
//Get the current thread static safe instance of the helper
IDataHelper db = DataHelper.SessionFactory();

//Specify User Name and License Key from the receipt
db.UserName = "John Smith 1234";
db.LicenseKey = "asdfl219==";

Q: I lost my license key how do I retrieve it?
A: Go to your account

Q: I lost my software how do I retrieve it?
A: Go to downloads

Q: Where can I download the latest version of my software?
A: Click the download tab.

Q: How does the licensing work?
A: Each developer that uses Knight Data Access Layer must have a license. You may distribute your application to end users royalty free or use it on an unlimited number of servers. A site license is for all the developers in a single building. An enterprise license would be for numerous developers in multiple buildings.

Q: Does it work with ASP.NET?
A: Yes it works with any .NET project type.

Q: What happens when the trial expires?
A: An exception is thrown, indicating that the trial is expired.

Date Version Description
7/3/2012 1.0 Initial Release. Knight Data Access layer is the new best choice for communicating with your database. It contains an ORM, LINQ provider, ADO.NET wrapper, and generator. It is compatible with SQL Server, Oracle, MySQL, VistaDB, Sqlite, PostgreSQL, and MS Access. This product is free for all current Gold Suite Subscribers.Learn More
7/11/2012 1.01 By customer request, Knight Data Access layer has an example in the help file for creating a base repository, can create aVB.NET Class from a Table, and has an example for Active Record.
7/14/2012 1.02 By customer request, there is is now a Quick Start in the help file for VB.NET users. There is now a Basic Tasks VB.NET section of the help file with a large number of VB.NET examples. There are no code or feature changes for this release.
7/31/2012 1.06 This release contains a number of bug fixes, enhancements, and help file expansion.Critical bug fixes; MVC Session Issue, Class Generation Issue for SQL Server bit and smalldatetime. New features; support for Stored Procedure Output Parameters, table schema attribute, ability to specify a default schema. Help for Database First Approach, Code First Approach and No Approach. Help for Setup method, help for overriding mappings at run time, help for specifying the schema and overriding the schema at run time,
8/17/2012 1.09 New help topics for using the ODBC and OLEDB providers, creating a custom provider. A VB.NET namespace synchronization issue was also fixed.
9/21/2012 1.10 By customer request, an OpenCloseWrapper has been added for wrapping operations for a connection. Help file for LINQ was also expanded.
11/5/2012 1.12 By customer request, LazyLoading has been added. Some minor defects have also been fixed.
7/1/2013 1.15 By customer request, the library handles one to one relationships where the key names do not match.
8/12/2013 1.17 By customer request, LoadPageWithChildren has been implemented.
11/29/2013 1.18 New build for .NET Framework 4.5 and 4.5.1.
3/22/2014 1.21 Better explanation of primary key defaults in the help file. Fix for Pluralization issue with SchemaInfo. Removed bad semi colon for MS Access Create Table. Corrected bug when the primary key is the last item in the object.
5/9/2014 1.23 Fix for Bit type mapping for MySQL.
7/6/2014 1.24 This version fixes an issue with the Microsoft Access provider to handle spaces in table and column names.
10/19/2014 1.31 This update fixes a compatibility issue with projects using ClickOnce deployments. It also includes additional methods for greater flexibility when mapping in code.
3/14/2015 1.34 This update fixes a caching issue with LoadPageWithChildren. New feature, support for null single child objects.
6/22/2015 1.36 New feature, handling of long text field creation for both DbType.AnsiString and DbType.String when creating tables from classes. New feature, LoadAllWithChildren. Fix to setup for DatabaseExists when in a shared hosting environment. Fix for multi-threading issue with Automap feature. Fixes for VistaDb and SqlServer provider smalldatetime generation.
10/10/2015 2.0 Major feature; provider for PostgreSQL. New methods LoadWithChildren, LoadWhere, LoadOne overload with where clause. New name value parameter support for simpler calling. Support for special directories for file based databases such as current directory, application data, and my documents. Record hook events for Before Insert, Before Update, Before Delete, After Insert, After Update, and After Read. Fix for joining a parent of a child. A super simple demo is now included. Correction for time not being saved for MS Access. Added help for connection strings and joins.
12/15/2015 2.03 More descriptive error messages when missing parent keys. This also fixes an internal caching issue for multiple namespaces with the LINQ provider.
2/24/2016 2.04 Builds for .NET Framework 4.5.2 and 4.6. The library remains 100% managed code but is now compatible with COM.
6/18/2016 2.06 A simple demo in VB.NET was added. The NuGet package now includes the help file.
10/22/2016 2.08 Fix for class generation for tables and columns with spaces. Schema specification fixes. LINQ schema mapping support. New feature, ability to add maintenance fields to a table.
4/27/2017 2.10 New features, support for SQL Server sql_variant type. Unique constraint for SQL Server has been added. Unique key support has been added for VistaDB and SQL Server.
8/29/2018 3.00 Many new features were added for SQL Server, Oracle, MySQL Firebird, SQLite, VistaDB, Microsoft Access, and PostgreSQL. New features: automatically creates foreign key constraints, automatically creates indexes for foreign keys, support for indexes with attributes, huge performance increase for LoadWithChildren and LoadAllWithChildren, support for MySql Version 8, support for Firebird Version 3, new methods SyncTableFromEnum, IndexExists, CreateIndex, GetIndexesForTable, ForeignKeyExists, GetAllConstraints and IsFileBasedDatabase.
9/21/2018 3.11 New provider: OracleManagedDataAccessProvider that works with NuGet package Oracle.ManagedDataAccess
2/23/2019 3.12 Support for mapping SQL Server Geography and HiearchyId types. Create tables with composite keys for all database types. Detect composite keys in existing tables for all database types. New provider methods, GetServerNameFromConnectionString and GetDatabaseNameFromConnectionString.
9/14/2019 3.13 Builds for .NET Framework 4.7, 4.7.1, 4.7.2, and 4.8.
11/2/2019 3.14 Now supports indexes for tables and columns with spaces in the name.
2/16/2020 4.0 Now compatible with VistaDB Version 6. Support for one to one foreign key constraints. Fix when there is a circular reference for automap. Fix for foreign key self reference for entity trees.
12/10/2020 4.12 The PostgreSQL provider now supports bpchar.
2/7/2021 4.13 Faster CountRecordsInTable for Oracle, MySQL, and PostgreSQL. Support for reserved word wrapping in back ticks for MySQL.
11/7/2021 4.15 Fix for GetPrimaryKeyColumnsForTable for MySqlProvider.
12/6/2021 5.00 Now compatible with .NET Core 2.0 and higher, Mono 5.4 and higher, Xamarin.iOS 10.14 and higher, Xamarin.Mac 3.8 and higher, Xamarin.Android 8.0 and higher, Universal Windows Platform 10.0.16299 and higher, Unity 2018.1 and higher, .NET 5, and .NET 6.
12/17/2021 5.11 Fix for OleDb reference error in .NET Framework version.
1/9/2022 5.16 Fix for Linq CompareString with VB.NET.
3/3/2022 5.18 Fix for reading app.config files under Resharper and MSTest.
5/20/2022 5.20 Fix for CountRecordsInTable for some versions of Oracle.
7/28/2022 5.21 Fix Object Reference Error for Xamarin Forms.