2017-10-19 6 views
0

ASP.NET MVC 웹 응용 프로그램에 대한 동적 XML 사이트 맵을 만들려고합니다. 이 페이지는 엔티티 프레임 워크 6 모델에 의해 데이터베이스에서 검색된 데이터에 기초하여 구조화되고 예측 가능합니다. 데이터베이스에서 각 항목을 검색하는 데 XML 리터럴을 사용하고 싶습니다. 어떤 일이 발생하는지는 here입니다. System.NotSupportedException이 코드의 결과를 실행XML 리터럴 안의 엔터티에 Linq는 "무형의 생성자 만 엔터티에 Linq에서 지원됩니다"

Dim xmlSitemap = <?xml version="1.0" encoding="UTF-8"?> 
       <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
        <url> 
         <loc>https://example.com</loc> 
        </url> 
        <url> 
         <loc>https://example.com/Home/Contact</loc> 
        </url> 
        <%= From blog in db.Blogs Select <url> 
                  <loc>https://example.com/BlogPosts/<%= blog.PostId %></loc> 
                 </url> %> 
       </urlset> 

:

내 문은 다음과 같습니다. '만 매개 변수가없는 생성자와 초기화가 엔티티에 LINQ에서 지원되는'

Public Sub New()을 인수없이 포함하도록 모델을 수정해도이 오류를 해결할 수 없습니다. 시도한 후 내 연구를 기반으로, 나는 이것이 Linq 쿼리 내에서 문자열을 연결한다는 사실과 관련이 있다고 생각하지만, 나는 다른 방법을 모른다. 이 방법으로 사이트 맵을 만드는 방법이 있습니까, 아니면 너무 많이 묻는 것입니까?

+0

.NET 수준에서 ''태그에 의해 생성 된 컴파일 된 표현식은 Entity Framework (즉 SQL 문)에서 처리하기에는 너무 복잡합니다. 'db.Blogs' 다음에'.ToList()'또는'.AsEnumerable()'을 추가하여 나머지 LINQ 문을 LINQ-to-Objects 문맥으로 강제하십시오. – StriplingWarrior

+1

@StriplingWarrior,'.ToList()'를 추가하면 실제로 작동했습니다. 나는 그걸 생각하지 않았다. 당신은 완전한 대답으로 당신의 코멘트를 할 수 있습니까? –

답변

1

.NET 수준에서 해당 태그에 의해 생성 된 컴파일 된 표현식이 Entity Framework (즉 SQL 문)에서 처리하기에는 너무 복잡하다고 생각합니다. db.Blogs 뒤에 .ToList() 또는 .AsEnumerable()을 추가하여 나머지 LINQ 문을 LINQ- 개체 컨텍스트로 강제 적용하십시오.

참고 : 예를 들어 Where 절 앞에 .ToList()을 쓰지 않도록하십시오. 따라서 심각한 성능 저하를 피하십시오.