2012-02-08 9 views
4

私はカレンダーアプリケーションを作成しています。私は、アポイントメントテーブルと、Personテーブルを持っています。 2は各テーブルのPersonIDフィールドでリンクされています。cでデータベースの外部キーをモデル化する

私の基礎となる.Net AppointmentオブジェクトにPersonNameのプロパティが含まれていて、データベースビュー(またはテーブルを結合するストアドプロシージャ)からオブジェクトを移入するか、AppointmentクラスPeopleクラスを含んでいますか?答えが後者の場合、データベースからAppointment/Personオブジェクトを取り込む最善の方法は何ですか?

答えて

0

あなたはORMを使用していないと仮定すると、あなたはDAOパターンを見てみましょうことがあります。

class Person 
{ 
    public int id { get; set; } 
    public String name { get; set; } 
} 

class Appointment 
{ 
    public int id { get; set; } 
    public Date when { get; set; } 
    public Person who { get; set; } 
} 

そして、「完全な」任命クラス: http://en.wikipedia.org/wiki/Data_access_object

私は2つのDTOを作成します。

class FullAppointment 
{ 
    private Person person; 
    private List<Appointment> appointment; 
} 

その後DTOは、DBからデータを取得する:

class AppointmentDTO 
{ 
    public FullAppointment retrieveFromDb(int personId) 
    {//...} 
} 
1

私はデータベースを読むことについてよく分かりません。

public class Person 
{ 
    public List<Appointment> Appointments { get; private set; } 
    ... 

    public Person() 
    { 
     Appointments = new List<Appointment>(); 
    } 
} 

public class Appointment 
{ 
    public Person Person { get; set; } // Only if you need this relation from 
    ... 
} 

そして、あなたのモデルで:しかし、クラスは次のようになり

Persons = new List<Person>(); 
1

あなたがプロパティを複製することはできません。 enetity/classには、そのエンティティに有効なプロパティしか持たないようにしてください。

別のテーブルを呼び出す場合は、特定の外部キーによって別のエンティティを返すプロパティが必要です。あなたのケースでは

私は助け

public class Person 
{ 
    List<Appointment> _appointments; 
    public List<Appointment> Appointments 
    { 
     get 
     { 
      if (_appointments == null) _appointments = //LOAD APPOINTMENTS FOR THAT PERSON 
      return _appointments; 
     } 
    } 
} 

希望を持っているでしょう。

関連する問題