2012-11-25 2 views
4

문제점이 있습니다. 아마 당신 중 한 명이 전문가를 도울 수 있습니다. 쿼리하는 테이블에 2 xml 열이 있습니다. 이러한 열의 xml 데이터에 대한 쿼리를 수행해야합니다 (내 고급 검색 기능). 문제는 Entity Framework를 사용하고 있으며 지원하지 않습니다. "ObjectQuery.Execute"를 수행하려고해도 구문 오류가 발생합니다. 그럼 내 옵션은 뭐니?쿼리 XML에 대한 Entity Framework

  1. 작업을 수행하기 위해 Entity Framework를 사용할 수 있도록 테이블을 수정하고 쿼리해야하는 XML 데이터를 추가하십시오.
  2. 고급 검색 용으로 ODBC를 사용하고 SQLXml을 사용할 수있는 정규 쿼리를 수행합니까? [다중 연결, 너무 많은 연결, 디자인의 우월/건축가 등]의 잠재적 인 위협은 무엇입니까?
  3. 아니면 누구나 더 나은 해결책을 제안 할 수 있습니까?

감사, 문자열에

+0

예외에 대한 자세한 내용을 추가하십시오. 내 답변에 명시된 바와 같이, 그것은 EF를 사용하여 XML로 작업하는 것이 가능합니다. –

+0

다음과 같이하고 싶습니다.

 SELECT it.Id, it.Name, it.SomeData, it2.someotherdata FROM Table1 as it CROSS APPLY it.XmlData.nodes('/FORM/PAGES/PAGE/FIELDS/FIELD[@name="LOCATION"]') location(tRef), Table2 as it2 WHERE it.Id = it2.Table2RefId AND it.Live = 1 AND location.tRef.value('.', 'VARCHAR(MAX)') LIKE '%Venn%' ORDER BY id DESC 

답변

2

EF지도 SQL 서버 XML 형식의 열

알리 Nahid. 이 정의에 대한 그래서 :

CREATE TABLE [dbo].[XmlData](
[ID] [int] IDENTITY(1,1) NOT NULL, 
[XmlTestColumn] [xml] NOT NULL 
) 

다음과 같은 엔티티 것 :

public partial class XmlData 
{ 
    public int ID { get; set; } 
    public string XmlTestColumn { get; set; } 
} 

및 수 부하에게 하나의 접근 방식 등을 XmlDocument에 문자열을 것입니다. 당신은 SQL 서버에 대한 네이티브 XML 쿼리를 실행하려는 경우

, 당신은 정의 또는 적절한 개체 유형을 선택

  1. 해야합니다; 이다 당신의 XML 쿼리와
  2. 사용 Database.SqlQuery :

    VAR 쿼리 = context.Database.SqlQuery (@ "SELECT it.Id, it.Name, it.SomeData, 표 FROM t2.someotherdata 그것은 적용 교차한다. .. ");

ObjectQuery은 개념적 모델에 대해 작동하며 원시 쿼리를 지원하지 않습니다.

+0

답해 주셔서 감사합니다. 그러나 이것은 내 문제가 아닙니다. 이렇게하면 테이블의 XML 열에서 XMLData를 쿼리하지 않고 먼저 DB에서 쿼리해야합니다. 그런 다음 결과 집합을 반복하고 XML 데이터를 쿼리해야합니다. 하지만 SQL Server 2005의 SQL Server에는 XMLSQL 쿼리를 수행 할 수있는 또 다른 기능이 있습니다. 위 게시물에 내 의견을 참조하십시오. 감사합니다. . –

+1

@AliNahid 설명해 주셔서 감사합니다. 답변을 업데이트했습니다. –

+0

답해 주셔서 감사합니다. 말이된다. 하지만 .NET4를 실행하고 있기 때문에 지금 작동하는지 확인할 수 없습니다. 따라서 System.Data.Entity 라이브러리에 Database.SqlQuery가 없습니다. 그 때문에 4.0을 덮어 쓰는 4.5를 설치해야합니다. 하지만 IIS와 Umbraco에 여러 개의 응용 프로그램이 있기 때문에 (현재 무서워하고있는 곳이기 때문에) 현재 응용 프로그램과 서버에서 아무 것도 테스트하지 않으면 내가 할 수 없습니다. 유감스럽게도 위험한 업데이트처럼 들릴 수 있습니다. –

관련 문제