私はLINQでリポジトリパターンを使用していますが、IRepository.DeleteOnSubmit(T Entity)を持っています。それは正常に動作しますが、私のエンティティクラスは、このようなインターフェースを有する場合: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への変換はサポートされていません。
DBからのデータの取得は機能しますが、削除と挿入は機能しません。 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);
(それはDBからの全てのタグを取得し、それらを削除します)
およびスタックトレース:
:[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