Oui, si vous utilisez une couche ORM appropriée, comme NHibernate (par exemple avec courant), ce qui peut mettre en cache les appels (requêtes SQL) à la table des paramètres pour vous entièrement automatiquement. Et vous manipulez les tables sans aucun SQL, seulement comme des appels aux méthodes des classes. Cependant, il faut apprendre NHibernate, ce qui peut prendre un peu de temps pour s'y habituer.
Il n'est pas possible d'obtenir les données de la table Settings à partir de la base de données sans envoyer de requête à la base de données. Mais vous pouvez éviter l'utilisation fastidieuse de la mise en correspondance du résultat avec des objets en utilisant un ORM.
Si vous prenez à la fois NHibernate et FluentNHibernate, il ressemble à quelque chose comme ceci pour MS SQL Server 2008:
// this depends on your implementation, I assume a Settings class with
// simple getters and setters that map directly to the table. Use
// Fluent to do the mapping (see link) automatically through AutoMappings
// example of using AutoMappings plus configuration of linking to DB:
ISessionFactory sessionFactory = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008
.ConnectionString(c =>
c.Server("123.12.21.321")
.Database("db_name")
.Username("db_user_with_access_to_db")
.Password("passwordhere")
)
)
.Mappings(m =>
m.AutoMappings.Add(AutoMap.AssemblyOf<Logo>()
.Where(t => t.Namespace == "YourNamespace.Entities"))
)
.BuildSessionFactory();
// example of a Settings class:
public class Settings
{
public int Id { get; private set; }
public int BackgroundColor { get; set }
// etc
}
// example of getting a session, retrieving data, changing/saving data
ISession session = sessionFactory.OpenSession(); // session for getting data from DB
Setting mySetting = session.Get<Setting>(someId);
mySetting.BackgroundColor = 0xAA44DD;
var transaction = session.BeginTransaction();
session.SaveOrUpdate(mySetting);
transaction.Commit();
// how it looks like if you use Generics and a little Dao class to wrap it all up:
Dao<Settings> daoSettings = new Dao<Settings>();
Settings someSettings = daoSettings.Get(someIdHere);
Settings userSettings = daoSettings.Get(new User("John"));
List<Settings> allSettings = daoSettings.GetAll();
int BackgroundColor = userSettings.BackgroundColor; // any of the columns here
userSettings.BackgroundColor = 0x45DA8E;
daoSettings.Save(userSettings);
D'autres ORM existent, NHibernate peut être un peu exagéré si cela est une seule fois situation et si vous ne l'avez jamais fait auparavant. Cependant, il dispose d'un cache automatique de niveau 1 et 2 pour éviter les allers-retours inutiles à la base de données. Il est actuellement (prétendument?) La solution ORM open source leader de l'industrie.
Mise à jour: ajouté exemple simple de code et des liens vers NH/Courant
Vous devez enregistrer les paramètres quelque part, alors que les « déchets » as-tu peur? –