Subsonique, SimpleRepository et interfaces d'entités
-
20-09-2019 - |
Question
Tout d'abord, je veux présenter mes excuses pour mon anglais, pas mon côté le plus fort.
A la question. Dans mon projet actuel, j'ai interfaces à mes entités je peux utiliser des attributs subsoniques à ma tête ENTITES et je veux être en mesure de passer de façon transparente O / R cartographe à l'avenir. Quoi qu'il en soit, je reçois une erreur lorsque je tente d'utiliser mes interfaces et classes SimpleRepositorys comme unique <>, Tous <> et ainsi de suite. Je sais pourquoi je reçois le message d'erreur, mais je besoin d'aide pour trouver un moyen de la contourner. Message d'erreur:
System.InvalidCastException. Impossible de coulée objet de type 'SubSonic.DomainObjects.User' taper 'Core.DomainObjects.IUser'
Code de:
public IUser FindById(int id) {
var user = _repository.Single<User>(x => x.Id == id);
return (IUser)user;
}
Comme vous pouvez le voir, je l'ai essayé de rendre l'utilisateur à l'ordre IUser travailler quand je veux ajouter des données, mais sans succès. Que puis-je faire pour faire ce travail?
Merci,
Timmie
La solution
Je ne pense pas subsonique est le problème dans cette situation. Ce code fonctionnera:
namespace Core.Objects
{
public interface ICustomer
{
int CustomerID { get; set; }
string Name { get; set; }
}
}
Code de la classe réelle:
namespace Business.Entities
{
public class Customer: Core.Objects.ICustomer
{
public int CustomerID { get; set; }
[SubSonicStringLength(50)]
public string Name { get; set; }
}
}
Et enfin, la fonction pour obtenir le client:
private static ICustomer CustomerByID(int id)
{
var repos = new SimpleRepository("Test", SimpleRepositoryOptions.None);
var customer = repos.Single<Customer>(c => c.CustomerID == id);
return (ICustomer) customer;
}