2012-02-27 9 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

+0

これはデータベースの外観ですか? http://i.imgur.com/48FBr.png – Schoof

+0

'customer'が 'contact'を継承している場合、customer_idはcustomerの主キーと同様にcontact_idとの外部キー関係でなければなりません表。ここでは、トピックに関する優れたウォークスルーがあります:http://www.robbagby.com/entity-framework/entity-framework-modeling-table-per-hierarchy-inheritance/ – ken

1

:) おかげで、私は別のテーブルを作成し、任意の助けをいただければと思います。私は、各連絡先のタイプを設定するよりもContactTypesを。その後、私は余分なテーブルを作成することができます:PropertiesToContactTypesとこれの後に名前を持つ新しいもの:PropertiesToContacts。私はこれがとてもシンプルで便利なアプローチだと思います。

複雑なクエリに対処する必要がある場合には、プログラムコード内に物事を作成するだけでは困難な状況におかれます。 Linq to SQLは素晴らしいツールですが、複雑なクエリの場合はストアドプロシージャを使用してください。

+0

ここで私に何を伝えようとしているのか分かりません。ごめんなさい! – Schoof

+0

ContactTypes(ID、ContactTypeName) 連絡先(何でも、ContactTypeID [ContactTypesへの参照]) プロパティ(ID、PropertyName意味)のみ編集ページについて PropertiesToContectTypes(ContectTypeID、PropertyID)// PropertiesToContacts(ContactID、PropertyID) 私は」私はこれをすべて説明するのが難しいので、私が提供した例のようなデータベース構造を設定してみてください。 –