LINQ 쿼리의 XmlNode에서 "InnerText"속성을 호출하면 "같은 키를 가진 항목이 이미 추가되었습니다."라는 이상한 오류가 발생합니다.LINQ 쿼리의 XmlNode에서 "InnerText"가 작동하지 않습니다.
쿼리 보이는 같은 :
var partnersXml = from partnerTable in dataContext.SomeTableInDb
where partnerTable.XmlType == "partner"
select new
{
partnerId = XmlDocumentWrapper(partnerTable.XmlDocument).SelectSingleNode("//*[name()='partnerId']").InnerText
};
설명 :
- partnerTable.XmlDocument는
- XmlDocumentWrapper이 방법은 주어진 XML 문자열을위한을 XmlDocument를 반환 DB에 문자열 XML은
"InnerText"없이 쿼리가 완벽하게 작동합니다 (partnerId에 XmlNode가 포함됨). LINQ에서 이런 종류의 버그가 있습니까? 이 문제의 해결 방법은 무엇입니까?
스택 추적 :
System.ArgumentException : 동일한 키 가진 항목이 이미 추가되었습니다. System.Collections.Generic.Dictionary 2.Insert(TKey key, TValue value, Boolean add) at System.Data.Linq.Mapping.UnmappedType.GetDataMember(MemberInfo mi) at System.Data.Linq.SqlClient.SqlFactory.Member(SqlExpression expr, MemberInfo member) at System.Data.Linq.SqlClient.QueryConverter.VisitMemberAccess(MemberExpression ma) at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node) at System.Data.Linq.SqlClient.QueryConverter.Visit(Expression node) at System.Data.Linq.SqlClient.QueryConverter.VisitExpression(Expression exp) at System.Data.Linq.SqlClient.QueryConverter.VisitNew(NewExpression qn) at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node) at System.Data.Linq.SqlClient.QueryConverter.Visit(Expression node) at System.Data.Linq.SqlClient.QueryConverter.VisitSelect(Expression sequence, LambdaExpression selector) at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc) at System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpression mc) at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node) at System.Data.Linq.SqlClient.QueryConverter.ConvertOuter(Expression node) at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations) at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) at System.Data.Linq.DataQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator() 그것은 SQL에 LINQ처럼 보이는
어떤 stacktrace? 어떤 그룹화를하고 있습니까? 뚜렷한? 사전 어딘가에 관련되어있는 것처럼 들리네 ... –
그룹화가 없거나 뚜렷하지 않습니다. 내가받는 유일한 메시지는 "동일한 키를 가진 항목이 이미 추가되었습니다."입니다. –