Je reçois cette erreur:Comment puis-je écrire une comparaison personnalisée (définition de l'opérateur binaire Equal) pour l'objet entityframework dans un int?
ex = {"The binary operator Equal is not defined for the types 'MySite.Domain.DomainModel.EntityFramework.NickName' and 'System.Int32'."}
Ce que j'ai essayé de faire était de faire tout sélectionner où le NickNameId = someIntPassedIn
... le problème est que la NickNameId est une clé étrangère, alors quand il compare le someIntPassedIn
à le NickNameId
il tire l'objet entier NickName
que le NickNameId
fait référence et essaye de comparer l'int à cet objet.
Je besoin d'une solution ici pour lui permettre de comparer l'int Id de l'objet nickname ... si
A) Comment puis-je définir l'opérateur binaire égal pour comparer ces deux objets
OU
B) Comment puis-je le comparer directement à l'ID au lieu de l'objet entier?
Vous ne devez pas lire cela, mais voici la méthode SelectAllByKey Incase il aide:
(je suis passé « NickNameId » et « 1 »)
public IList<E> SelectAllByKey(string columnName, string key)
{
KeyProperty = columnName;
int id;
Expression rightExpr = null;
if (int.TryParse(key, out id))
{
rightExpr = Expression.Constant(id);
}
else
{
rightExpr = Expression.Constant(key);
}
// First we define the parameter that we are going to use the clause.
var xParam = Expression.Parameter(typeof(E), typeof(E).Name);
MemberExpression leftExpr = MemberExpression.Property(xParam, this._KeyProperty);
int temp;
BinaryExpression binaryExpr = MemberExpression.Equal(leftExpr, rightExpr);
//Create Lambda Expression for the selection
Expression<Func<E, bool>> lambdaExpr = Expression.Lambda<Func<E, bool>>(binaryExpr, new ParameterExpression[] { xParam });
//Searching ....
IList<E> resultCollection = ((IRepository<E, C>)this).SelectAll(new Specification<E>(lambdaExpr));
if (null != resultCollection && resultCollection.Count() > 0)
{
//return valid single result
return resultCollection;
}//end if
return null;
}
Laissez-moi savoir si vous avez besoin de plus Info.
Merci,
Matt
Vous êtes un Dieu! Merci beaucoup! – Matt