2010-06-03 130 views
1

我一直在使用實體框架和自我跟蹤實體代碼生成模板,用於我最新的Silverlight到WCF應用程序。這是我第一次在實際項目中使用實體框架,我希望當我的數據庫模式發生變化時能夠自動更新項目的整個數據訪問層,從而節省了大量的時間和精力。實體框架+自我跟蹤實體應該爲我節省時間

令人高興的是,我發現通過添加一個新表,更改列名,添加新列等等來更新我的數據庫模式可以通過使用數據庫更新傳播到我的業務對象類選項在實體框架模型上。

我受傷的地方在於我的WCF服務中的CRUD操作,以響應我的Silverlight客戶端上的操作。我在我的Silverlight應用程序中使用了相同的自我跟蹤實體框架業務對象,但是我發現我不斷需要解決諸如在更新對象時沒有正確處理外鍵關聯或更改跟蹤器對關於對象在Silverlight結束和WCF層內的數據訪問操作拋出一個搖擺不定。

現在,我已經花了更多的時間處理這些怪癖,而不是我之前的項目中使用Linq-to-SQL作爲滾動自己的業務對象的起點。

它只是我無望或自我跟蹤實體的方法應該避免,直到它更成熟?

+0

您是否對此有任何結論?我目前正在考慮從自身跟蹤實體轉換LinqToSQL到EF,所以我真的很想知道。 – 2010-06-10 09:47:08

+0

我一直堅持自我追蹤的實體,而不是回覆到L2S或手卷類。如果我必須再次做同樣的事情......我可能會試着堅持使用實體框架,我認爲它用於DAL的建模方法是一條可行的路線,一旦獲得了它的良好理解,它將會轉化爲提高生產力。我不太確定自我跟蹤實體。模板代碼絕對可以改進,希望它們在未來幾個月能夠更新。 – sipwiz 2010-06-10 13:55:16

回答

1

你使用的是什麼版本的自我跟蹤實體?

我使用.Net 4.0版本和visual studio 2010一起使用。所有的CRUD操作都可以正常工作,也可以使用FK進行操作。

我在使用FK的VS 2008中遇到了問題,但是在VS 2010中使用.Net 4.0時沒有問題。

如果你願意,我可以爲你提供一些樣品。

問候

+0

我使用VS 2010和.Net 4。 CRUD操作大部分都適用於我,但10%的邊緣案例需要花費很多時間才能整理出來。如果你有一些容易得到的東西,我不介意把一些樣本看作是一個完整的檢查。 – sipwiz 2010-06-06 07:59:33

0

由於STE實體不支持延遲加載,你應該使用包含在服務器端包括相關的屬性。無法包含所有相關的導航屬性。您必須明確包含這些屬性。例如 //服務器端 customer.Include(「Orders.OrderDetails」).include(「Address」)