J'utilise un modèle de référentiel avec LINQ, avec IRepository.DeleteOnSubmit (Entité T). Il fonctionne très bien, mais quand ma classe d'entité possède une interface, comme ceci:LINQ, entité qui implémente l'interface et l'exception dans le mappage
public interface IEntity { int ID {get;set;} }
public partial class MyEntity: IEntity {
public int ID {
get { return this.IDfield; }
set { this.IDfield=value; }
}
}
puis essayer de supprimer une entité comme ceci:
IEntity ie=repository.GetByID(1);
repoitory.DeleteOnSubmit(ie);
lancers francs
Le membre « IEntity.ID » a pas de traduction supportée vers SQL.
l'extraction des données à partir de la base de données, mais pas de la suppression et de l'insertion. Comment utiliser l'interface avec DataContext?
Ici, il est:
Message d'exception: Le membre 'MMRI.DAL.ITag.idContent' n'a pas de traduction pris en charge à SQL.
code:
var d = repContent.GetAll().Where(x => x.idContent.Equals(idContent));
foreach (var tagConnect in d) <- error line
{
repContet.DeleteOnSubmit(tagConnect);
(il obtient tous les tags de DB, et les supprime)
Et trace de la pile:
[NotSupportedException: The member 'MMRI.DAL.ITag.idContent' has no supported translation to SQL.]
System.Data.Linq.SqlClient.Visitor.VisitMember(SqlMember m) +621763
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) +541
System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) +8
System.Data.Linq.SqlClient.SqlVisitor.VisitBinaryOperator(SqlBinary bo) +18
System.Data.Linq.SqlClient.Visitor.VisitBinaryOperator(SqlBinary bo) +18
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) +196
System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) +8
System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect select) +46
System.Data.Linq.SqlClient.Visitor.VisitSelect(SqlSelect select) +20
System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) +1024
System.Data.Linq.SqlClient.SqlProvider.BuildQuery(...
Lorsque je tente faire décorer la classe partielle:
[Column(Storage = "_idEvent", DbType = "Int NOT NULL", IsPrimaryKey = true)]
public int idContent
{ get { return this.idEvent; } set { this.idEvent=value; } }
il throws error "Nom de colonne invalide 'idContent'."
Le dépassement de pile n'est pas un forum. Certaines des choses que vous (et d'autres) avez posté comme "réponse" à la question devraient être des "commentaires". Vous pouvez également modifier la question d'origine et toute réponse. – jeroenh