2010-03-22 60 views
1

我非常喜歡Linq to SQL和它鼓勵的編程模型。我認爲,在許多情況下,當你控制數據庫模式和代碼時,爲數據建立不同的關係和對象模型是不值得的。使用Linq to SQL可以很容易地從.NET獲得類型安全的數據訪問,使用部分擴展方法來實現業務規則。Linq to SQL代碼生成器功能

不幸的是,由於缺少模式刷新功能,我不喜歡dbml設計器。到目前爲止,我已經使用了SqlMetal,但是缺少dbml設計器的自定義選項。正因爲如此,我已經開始研究一種重新生成整個代碼文件(如SqlMetal)的工具,但是有能力執行dbml設計器中可用的自定義設置(也許將來可能會有更多)。

自定義將在一個xml文件中描述,該文件僅包含那些不應具有默認值的部分。這應該保持xml文件的大小以及它的維護負擔。

爲了幫助我關注正確的功能,我想知道:linq to sql代碼生成器中最重要的功能是什麼?

+0

這是SO的邊際問題。如果他們開始通過SO爲他們的產品收集有關可用性的信息,請考慮MS會得到的反應。至少它應該是社區wiki,因爲沒有辦法明確回答它。 – tvanfosson 2010-03-22 18:24:27

+0

僅供參考 - 我有一個Visual Studio插件,它爲設計人員添加了一些缺失的功能。 (控制類和屬性命名,批量重命名,模型<->數據庫同步,通過xml註釋的類和屬性文檔等)。查看http://www.huagati.com/dbmltools/看看它是否符合你的需求。 – KristoferA 2010-03-23 02:30:16

回答

1

不知道這是否就是你要找什麼是的,但這裏的一些功能,我希望看到:

  • 到枚舉類型分配給外鍵字段的能力。因此,如果您的「Item」表參考了「ItemType」表,則可以輕鬆地爲該關係分配一個「ItemType」枚舉,以便在訪問get/set屬性時獲得嚴格類型的枚舉而不是ID在另一張桌子上錄製。我認爲你可以在由DBML設計器生成的.cs文件中做到這一點,但當你下一次將表重新添加到設計器時,它會被吹走。另外,您可以在映射到ID字段的分部類中添加一個新屬性,但如果這是在設計器中本地完成的,那將會很好。

  • 在FK關係的情況下,根據FK字段名稱或FK約束名稱命名屬性。例如,如果您的「Item」表具有引用「User」表的「CreatedByUserID」和「UpdatedByUserID」字段,那麼LINQ DBML設計器將創建一個名爲「User」和「User1」的Item類,這樣您幾乎不得不猜測哪個是由哪個創建的,哪個是更新的(並且希望在分部類中添加額外的,更明確的屬性)。你如何去生成這些名字會變得有點多毛,但是什麼都比現在好。

+0

感謝您的意見。將查找錶轉換爲枚舉的想法非常好。與FK關係名稱的第二點是我已經有一個解決方案。當有試用版時,我會通知你。 – 2010-03-24 17:11:13