2013年12月21日 星期六

R.I.P. EntityDataSource


Tool:Visual Studio 2013 Ultimate
OS:Windows Server 2012
.NET Framework : 4.5.1



此篇文章探討的問題,有一新解法,請參考這篇文章 http://vmiv.blogspot.tw/2014/02/entitydatasource-resurrected.html

在VS2013 Web Forms Web Site使用EntityDataSource發生一些錯誤。重現錯誤:
  • New - ASP.NET WebForms Web Site
  • Add Edmx
image
  • from db
image

  • 選db
image
  • 選EF6
image
  • 選table
image
  • Add ASPX
image
  • 加一個GridView,新增Data Source
image
  • 選 Entity
image
  • 下一個畫面就GG了….
image
找尋許久,最後,根據這篇討論串 https://entityframework.codeplex.com/discussions/434936
結論就是EF6不支援 EntityDatasource了,Orz,要改用Entity Framework 5版本才行。舊專案沒事不要亂升級版本啊!!
  • 重複上面的步驟,但選Entity Framework 5版:
image
  • 在相同的地方,一樣GG….. Orz * 2,
不是說Entity Framework 5有支援的嗎??
試了半天,有個愚笨的解法:
  • 預設使用T4產生Entity Framework相關類別,先改回Legacy ObjectContext,刪到所有TT檔:
image
  • 設定Code Generation Strategy為Legacy ObjectContext
image
  • 重Build
  • GridView->Choose Data Source->Entity
image
  • 這回就沒顯示錯誤訊息了
image
image
  • 工具產生的tag如下
<asp:GridView ID="GridView1" runat="server" DataSourceID="EntityDataSource1"></asp:GridView>
   <asp:EntityDataSource runat="server" ID="EntityDataSource1" DefaultContainerName="pubsEntities" ConnectionString="name=pubsEntities" EnableFlattening="False" EntitySetName="stores"></asp:EntityDataSource>
  • RUN ASPX也沒問題
image
  • 若想要改回用T4範本,在此時可以選 Add Code Generation Item
image
  • 加入T4 範本
image
  • 可正常執行
image
  • 不過,設計工具就又失效了,後續想修改就自己敲Tag吧   Orz…誰記得這些tag要怎麼敲啊?
image

沒有留言:

總網頁瀏覽量