2009-12-16 68 views
2

當使用SQLMetal生成dbml時,是否有可能設置OneToOne關係(基數)?默認情況下使用OneToMany關係生成dbml模式。LINQ to SQL與SQLMetal的OneToOne關係(基數)

+0

是指向兩個表上的主鍵的關係?或者輔助表是否具有不同的主鍵,並且關係是否轉到了外鍵列? – 2009-12-16 18:06:19

+0

指向兩個表上的主鍵的關係。 – Sasha 2009-12-17 12:53:50

回答

2

您使用的是DBML設計器嗎?如果是這樣,您應該可以右鍵單擊表示該關係的箭頭,然後選擇屬性。 Cardinality屬性可以在屬性對話框中設置爲OneToOne。

+0

是的,我可以使用DBML設計器,但我想自動執行此過程! – Sasha 2010-02-04 16:49:58

+0

如果您希望*所有*關係成爲OneToOne,您可以編寫一些描述腳本來解析「關聯」元素的DBML文件(這只是XML),併爲每個元素添加一個屬性Cardinality =「One」元件。 – 2010-02-05 09:30:41

+0

在我的情況下,我只需要兩個關係是OneToOne。但似乎無論如何我會寫一些腳本。 – Sasha 2010-02-07 13:32:08

0

我使用SqlMetal生成一個Dbml文件,然後我使用xslt來修改它的內容(使用這個xslt base:http://blogs.msdn.com/ploeh/archive/2008/04/10/AutomaticallyGeneratingLINQToSQLModelsFromTSQL.aspx),例如。更改基數或更改枚舉的類型。

+0

謝謝我會嘗試你的方法。 – Sasha 2010-02-04 16:52:41

+0

也似乎linq2sql確實支持雙方的主鍵引用,所以只需創建一個引用(只是lika一個正常的一對多關係)並將該關聯設置爲cardiniality。 – 2010-02-05 09:52:01