我正在嘗試爲ASP.NET MVC Web應用程序創建動態XML站點地圖。基於通過實體框架6模型從數據庫檢索的數據,頁面是結構化和可預測的。我想簡單地使用XML文字從數據庫中檢索每個項目,有點像發生了什麼here。Linq to XML Literal中的實體生成「Linq to Entities中只支持無參數構造函數」
我的發言如下所示:
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>
在System.NotSupportedException運行這段代碼的結果:「只有參數構造函數初始化和LINQ中支持到實體。」
修改模型以包含沒有參數的Public Sub New()
並不能解決此錯誤。基於我的研究後,我猜測這與我在Linq查詢中連接字符串的事實有關,但我不知道另一種方式。有沒有這種方式來創建網站地圖,或者我問的太多了?
我猜測,在.NET級別,由''標記生成的編譯表達式太複雜,無法在實體框架內處理(即在SQL語句中)。嘗試在db.Blogs之後添加'.ToList()'或'.AsEnumerable()',以強制LINQ語句的其餘部分進入LINQ-to-Objects上下文。 –
StriplingWarrior
@StriplingWarrior,加入'.ToList()'實際上確實有效。我沒有想到這一點。您能否將您的評論寫入完整答案,以便我可以將其標記爲正確? –