Class DatabaseSchemaCache
Implementation of IDatabaseSchemaCache. It allows to load database schemas after adding appropriate loaders (AddSchemaLoader(IDatabaseSchemaLoader, ISchemaCacheKeyGenerator)). Loading of a database schema is quite slow, that's why loaded schemas are cached. On next request for the same schema, it is not loaded from database, but returned from cache.
Inheritance
Implements
Namespace: Kros.Data.Schema
Assembly: Kros.Utils.dll
Syntax
public class DatabaseSchemaCache : IDatabaseSchemaCache
Remarks
It is necessary to initialize DatabaseSchemaCache with loaders (IDatabaseSchemaLoader)
and every loader must have its cache key generator (ISchemaCacheKeyGenerator). Different cache key
generators should generate different keys.
There is a property Default intended for simple static use, so it is not necessary to create own instance.
Properties
Default
Instance of DatabaseSchemaCache intended for simple static use. By default, it contains a loader
for Microsoft SQL Server (SqlServerSchemaLoader).
Declaration
public static DatabaseSchemaCache Default { get; }
Property Value
| Type | Description |
|---|---|
| DatabaseSchemaCache |
Methods
AddSchemaLoader(IDatabaseSchemaLoader, ISchemaCacheKeyGenerator)
Adds loader together with its cache key generator keyGenerator to the
inner loaders list.
Declaration
public void AddSchemaLoader(IDatabaseSchemaLoader loader, ISchemaCacheKeyGenerator keyGenerator)
Parameters
| Type | Name | Description |
|---|---|---|
| IDatabaseSchemaLoader | loader | Database schema loader. |
| ISchemaCacheKeyGenerator | keyGenerator | Schema cache key generator for |
Exceptions
| Type | Condition |
|---|---|
| System.ArgumentNullException | Value of |
ClearAllSchemas()
Declaration
public void ClearAllSchemas()
ClearSchema(Object)
Declaration
public void ClearSchema(object connection)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Object | connection |
Exceptions
| Type | Condition |
|---|---|
| System.InvalidOperationException | The cache does not contain a loader for database type
specified by |
ClearSchemaLoaders()
Removes all database schema loaders.
Declaration
public void ClearSchemaLoaders()
GetSchema(Object)
Declaration
public DatabaseSchema GetSchema(object connection)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Object | connection |
Returns
| Type | Description |
|---|---|
| DatabaseSchema |
Exceptions
| Type | Condition |
|---|---|
| System.InvalidOperationException | The cache does not contain a loader for database type
specified by |
RefreshSchema(Object)
Declaration
public DatabaseSchema RefreshSchema(object connection)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Object | connection |
Returns
| Type | Description |
|---|---|
| DatabaseSchema |
Exceptions
| Type | Condition |
|---|---|
| System.InvalidOperationException | The cache does not contain a loader for database type
specified by |
RemoveSchemaLoader(IDatabaseSchemaLoader)
Removes specified loader from inner loaders list.
Declaration
public void RemoveSchemaLoader(IDatabaseSchemaLoader loader)
Parameters
| Type | Name | Description |
|---|---|---|
| IDatabaseSchemaLoader | loader | Database schema loader to be removed. |