4

カレンダーアプリを作成しています。Appointment テーブルと Person テーブルがあります。この 2 つは、各テーブルの PersonID フィールドによってリンクされています。

私の質問は、基になる .Net Appointment オブジェクトに PersonName のプロパティが含まれている必要があり、データベース ビュー (またはテーブルを結合するストアド プロシージャ) からオブジェクトを入力する必要があるか、Appointment クラスに People クラスを含める方が正しいかということです。 ? 答えが後者の場合、データベースから Appointment/Person オブジェクトを設定する最良の方法は何ですか?

4

3 に答える 3

1

プロパティを複製しないでください。エンティティ/クラスは、そのエンティティに有効なプロパティのみを持つ必要があります。

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

あなたの場合、私は持っているでしょう

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

それが役立つことを願っています。

于 2012-02-08T12:53:51.947 に答える
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>();
于 2012-02-08T12:50:16.220 に答える
0

ORM を使用していないと仮定すると、DAO パターンを参照できます: http://en.wikipedia.org/wiki/Data_access_object

2 つの DTO を作成します。

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; }
}

そして、「完全な」予約クラス:

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

次に、DB からデータを取得するための DTO:

class AppointmentDTO
{
   public FullAppointment retrieveFromDb(int personId)
   {//...}
}
于 2012-02-08T12:49:20.527 に答える