Je travaille avec un modèle de domaine qui a été cartographiée de la manière suivante:NHibernate, la bonne façon de travailler avec des mandataires
- contrat IProxy (y compris Id)
- classe entité d'exécution du contrat
Exemple:
public class Product : IProductProxy {}
La classe est mis en correspondance en utilisant la logique suivante:
<class name="Product" table="[Products]" lazy="true" proxy="IProductProxy">
En ce moment, je trouve que les méthodes suivantes fonctionnent correctement:
var result = session.Load<IProductProxy >(1);
var result = session.Get<IProductProxy>(1);
var result = session.Get<Product>(1);
Bien que ces méthodes jettent « exception proxy » ou « exception de transtypage invalide »
var result = session.Load<Product>(1);
Ce que j'ai besoin de savoir est, quelle est la bonne façon de travailler avec les proxies et NHibernate. Par exemple, Je pensais que travailler directement avec l'interface serait bien, mais lorsque je tente de le faire:
// successful save
var result = session.Get<Customer>("ALFKI");
result.Name = "XXX";
session.Update(result);
// if error occurs I receive wrong exception
// cannot find mapping for ICustomerProxy ERROR
var result = session.Get<ICustomerProxy>("ALFKI");
result.Name = "XXX";
session.Update(result);
Dois-je toujours rejetterait à IProxy ou devrais-je utiliser mon type d'entité?
Quelle est la raison de fournir une interface proxy? – cremor
Ce n'est pas la question – Raffaeu
Fournir une propre interface proxy n'est pas l'utilisation normale des proxies NHibernate. Si nous savons pourquoi vous faites cela, nous serons peut-être en mesure de mieux vous aider. – cremor