我在LINQ中使用存储库模式,有IRepository.DeleteOnSubmit(T实体)。它工作正常,但是当我的实体类有接口,如:LINQ,在映射中实现接口和异常的实体
public interface IEntity { int ID {get;set;} }
public partial class MyEntity: IEntity {
public int ID {
get { return this.IDfield; }
set { this.IDfield=value; }
}
}
,然后试图删除一些像这样的实体:
IEntity ie=repository.GetByID(1);
repoitory.DeleteOnSubmit(ie);
抛出
“IEntity.ID”有成员没有支持的转换到SQL。
从数据库中获取数据,但删除并插入不。如何使用接口对DataContext?
这就是:
异常消息: 成员 'MMRI.DAL.ITag.idContent' 没有支持转换为SQL。
代码:
var d = repContent.GetAll().Where(x => x.idContent.Equals(idContent));
foreach (var tagConnect in d) <- error line
{
repContet.DeleteOnSubmit(tagConnect);
(它从数据库中的所有标签,并删除它们)
和堆栈跟踪:
[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(...
当我尝试做装饰部分类:
[Column(Storage = "_idEvent", DbType = "Int NOT NULL", IsPrimaryKey = true)]
public int idContent
{ get { return this.idEvent; } set { this.idEvent=value; } }
it抛出错误“无效的列名'idContent'。”
堆栈溢出不是论坛。你(和其他人)发布的一些东西“回答”这个问题实际上应该是“评论”。您还可以编辑原始问题和任何答案。 – jeroenh 2010-01-15 10:19:16