visual studio - 問題刷新LINQ to SQL設計器中的表




visual-studio visual-studio-2008 (6)

我一直在使用LINQ to SQL一段時間,有一件事一直困擾著我。 每當我修改一個表的模式,為了刷新它在設計師,我不得不刪除它,然後將其添加回來。 這很好,但是這意味著我必須在設計器中找到表格。 我的數據庫中有大約100多張桌子,每次我這樣做,就像在大海撈針一樣。 好吧,也許這不是很糟糕,但嚴重的是,它比想像的要長。

有沒有其他的選項來刷新我不知道的表?


我個人很討厭使用設計器,每當我敢於使用它的時候,我都會遇到各種各樣的問題。

我大多使用LINQ進行非常簡單的CRUD(沒有鏈接的實體或任何東西),如果是這種情況,可能值得離開設計師的拐杖。 特別是因為定義LINQ-to-SQL實體就像這樣簡單:

[Table("dbo.my_table")]
public class MyTable
{
[Column("id", AutoSync = AutoSync.OnInsert, IsDbGenerated = true, IsPrimaryKey = true)]
public Int32 Id { get; set; }

[Column("name", DbType="NVarChar(50) NOT NULL")]
public String Name { get; set; }
}

這樣,所有實體都有自己的文件,這使得查找它們變得更容易,儘管您仍然需要手動添加/更新屬性。

當然,如果你重構100多張表,那可能不是一個選擇;)


我和設計人員有過類似的問題 - 我建議的最好的事情就是為數據訪問的不同領域創建多個上下文 - 我把我的數據分解成了我可以在每個功能區域避開的相關表格。 你可以在上下文中重用表,所以這不是什麼大問題。


有些人使用SqlMetal來“刷新/更新”他們的Linq2Sql設計器。 當數據庫更改時,設計人員不支持刷新模式。 您必須手動刪除表格並重新添加。

我相信ADO實體框架可以刷新。 我沒有用過,但是我想我今年在TechEd演示中看到了這個。

有用的信息: Google對SqlMetal 的結果


這是不可能的使用VS LINQ到SQL設計器。

您可以使用第三方工具LLBLGEN PRO而不是內置的linq to sql設計器。 這不是免費的,但它也會做很多其他的東西,當然你可能也可能不需要。

LLBLGEN PRO實際上是一套完整的ORM工具,還包括一個增強型的linq-to-sql設計器,它具有“SQL中的刷新模型”功能。

看到這裡的問題的描述 - http://weblogs.asp.net/fbouma/archive/2008/05/01/linq-to-sql-support-added-to-llblgen-pro.aspx這裡的工具- http://www.llblgen.com/


我不做設計器上的內容的任何定制,所以在更改表格之後,我只需按CTRL + A,然後按下DEL。 然後轉移選擇所有的表格,並將它們拍回設計器。 我還沒有100張桌子,所以不知道在某些時候事情是否放緩,但有20多張桌子,只需要一秒鐘。


我寫了一個可以做到這一點的插件(在兩個方向;數據庫 - > DBML DBML - > SQL-DDL diff腳本)。

與另一個回復中提到的SQLMetal(或EF的“從數據庫更新模型”)不同,外接程序會進行真正的同步/刷新; 應用僅對應於模型和底層數據庫之間差異的更改。

這意味著您在模型的其他區域中所做的任何自定義(重命名的屬性/導航屬性等)將不會被刪除/覆蓋,除非它們與基礎數據庫模式衝突。 (在這種情況下,您仍然可以通過將它們添加到加載項的“排除列表”來保留它們)

您可以從http://www.huagati.com/dbmltools/下載並獲得免費的30天試用許可證





linq-to-sql