2012-02-27 47 views
0

我通常創建我的應用程序的方式是先創建數據庫並使用LINQ to SQL爲我創建類。 但在我目前的項目中,我想嘗試使用繼承,我不認爲它可能在數據庫中創建繼承?SQL Server和LINQ中的繼承?

因此,我想知道如何創建一個SQL Server/LINQ的繼承類,所以我可以保存/從我的數據庫中獲取數據。 例如,如果我有 父:

- contact (id, name, telephone number, address, email..) 

而且孩子

- customer(id, title, activity, discount, vat...) 
- supplier (id, title, activity, vat, bankaccount_number, manager, expiration_day...) 
- driver (id, first name, hire_date, fire_date, function, date of birth...) 

我將如何創建這些類工作的數據庫連接? 我沒有很多創建類的經驗,因爲我通常會讓Visual Studio(LINQ)爲我創建它們。

我會非常感謝任何幫助, 謝謝:)

回答

1

Linq-to-Entities(Entity Framework)開箱即用提供此功能。

你可以設計你的實體是一個父類的派生,然後創建查詢他們像這樣:

var customers = context.ContactSet.OfType<Customer>(); 
var suppliers = context.ContacctSet.OfType<Supplier>(); 
var drivers = context.ContactSet.OfType<Driver>(); 

父類和兒童類共享實體鍵。數據庫應該在父表和子表之間具有(1:0或1)關係。

我不認爲Linq-to-SQL存在任何類似的東西。

+0

我不確定我是否理解,你能舉一個更廣泛的例子嗎?謝謝 – Schoof 2012-02-27 18:03:18

+0

這是數據庫應該看起來像什麼? (klant = customer) http://i.imgur.com/48FBr.png – Schoof 2012-02-29 09:46:19

+0

如果'customer'擴展'contact',那麼customer_id應該是contact_id的外鍵關係,以及客戶的主鍵表。以下是關於該主題的很好的演練:http://www.robbagby.com/entity-framework/entity-framework-modeling-table-per-hierarchy-inheritance/ – ken 2012-02-29 13:24:13

1

我會創造另一個表:ContactTypes比我會爲每一個接觸的類型。在這之後,我可以創建一個額外的表:PropertiesToContactTypes,並在此之後添加一個名爲PropertiesToContacts的新表。我認爲這是一個非常簡單而有用的方法。

如果您只是在程序代碼中創建東西,那麼當您必須處理複雜的查詢時,您會在困難的情況下找到自己。 Linq to SQL是一個很好的工具,但對於複雜的查詢,你應該使用存儲過程。

+0

我不確定你在這裏告訴我什麼。抱歉! – Schoof 2012-02-27 18:04:24

+0

ContactTypes(ID,ContactTypeName) 聯繫(什麼,ContactTypeID [裁判ContactTypes]) 屬性(ID,屬性名) PropertiesToContectTypes(ContectTypeID,物業ID)//只爲編輯頁面 PropertiesToContacts(使用ContactID,物業ID) 我m英語不好,所以我很難解釋所有這些,所以我要求你嘗試建立一個像我提供的例子一樣的數據庫結構。 – 2012-02-27 18:30:23