2011-07-09 57 views
1

剛剛從LINQ2SQL開始,我有幾個問題。LINQ2SQL生成的類中的默認構造函數的訪問修飾符

我有一個單獨的表客戶,我運行sqlmetal,它會爲我生成一個ORM類。

我想在客戶的構造函數中應用某些規則,可能像 客戶的名字,姓氏成員必須被提供。

我創造了sqlmetal生成的客戶類的新構造函數 採取2個參數名字,secondName然後打上默認的無參數的構造函數 內部,因爲我不希望公開,要消耗任何這 組裝。

當我嘗試SubmitChanges()時,由於無參數構造函數的公共保護級別爲內部,我的代碼開始抱怨。

List<Customer> customerList = new List<Customer>(); 
customerList = dbInstance.Customer.ToList(); 
Customer customerToDelete = customerList.Where(c => c.Customer_id == 100).First(); 
dbInstance.Customer.DeleteOnSubmit(customerToDelete); 
dbInstance.SubmitChanges(); <-- error thrown 

「這個對象定義無參數的構造函數」

爲什麼一定要訪問修飾符是公衆在客戶ORM類的默認構造函數?公開時,按預期工作。

+0

有趣的是,如果它需要*實現物體,我不會感到驚訝。然後它需要*提交他們是很奇怪的。 –

回答

0

LinqToSql生成部分類,所以你可以使用它。也不要編輯生成的文件。更新模型後,您將失去所有更改。

+0

那麼在另一個Customer類中標記爲partial的業務邏輯將允許i)業務/數據邏輯的分離和ii)允許在不丟失任何業務數據的情況下重建數據層。所以我明白你的觀點,但是如果你想隱藏一個無參數的構造函數或者改變部分ORM類公開的某些屬性的訪問修飾符呢? – FuzzyFrog

相關問題