0

私は自分のプロジェクトで物事を行うための新しい方法を作成していますが、ある時点で助けが必要です. 私のソリューションには 3 つのプロジェクトがあります。

ビジネス、プロバイダー、モデル。

MODEL プロジェクトは、データベース内のテーブルと同じようにクラスを持っているプロジェクトです:例:

public class Person
    property Id as integert?
    property Name as string
    property CPF as string
end class

PROVIDER プロジェクトは、データベースとの通信を行うプロジェクトです。

public class PersonProvider
     public function ListPerson(filter as model.person) as list(of model.person)

     public sub insertPerson(byRef person as model.peson)

     public sub updatePerson(byRef person as model.peson)

     public sub deletePerson(byRef person as model.peson)
end class

最後に、BUSINESS プロジェクトがあります。これは、CRUD メソッドを Web サイトに公開するプロジェクトです (BUSINESS にビジネス ロジックがあるため、Web サイトは PROVIDER にアクセスできません)。

public class PersonBusiness
    public function ListPerson(filter as model.person) as list(of model.person)
           return (new provider.PersonProvider).listPerson(filter)
    end public

    public sub InsertPerson(byRef person as model.person)
           dim provider as new provider.PersonProvider()
           provider.insertPerson(person)
    end public

...

end class

しかし、次のような内部結合が必要なときに問題が発生しました。

テーブル CUSTOMER には id_person があるので、model.Customer には IdPerson プロパティを整数として持っていますか?

しかし、model.Person が持っているプロパティ Name と CPF が必要で、model.Customer の読み取り専用プロパティが必要なので、次のように作成しました。

    Property IdPerson As Integer?
    Private _person As Pessoa
    Private ReadOnly Property Person As model.Person
        Get
            If IsNothing(_person) Then
                _person = New provider.PersonProvider.ListPerson(new model.Person with {.Id = Me.IdPerson})
            End If
            Return _person 
        End Get
    End Property

    ReadOnly Property Name As String
        Get
            Return Me.Person.Name
        End Get
    End Property

    ReadOnly Property CPF As String
        Get
            Return Me.Pessoa.CPF
        End Get
    End Property

ここで質問が来ます...私は次のような参照を持つことができないことがわかりました:

ウェブサイト参照モデルとビジネス

プロバイダー参照モデル

ビジネス参照モデルとプロバイダー

しかし、読み取り専用のプロパティを実行するには、モデルがプロバイダーへの参照を必要とし、それにより円参照が発生します..ビジュアルスタジオでは、これを行うことができません...

これを行う方法はありますか?

私の投稿が長くなって申し訳ありませんが、物事を明確にしたかっただけです。

4

1 に答える 1

0

Web サイトおよびビジネスによってモデルにアクセスする代わりに、Provider および Person を参照する別のクラスを追加できます。この新しいクラスは、Web サイトおよびビジネスによって (Person を直接参照する Web サイトおよびビジネスではなく) 参照されます。

于 2013-09-22T23:28:32.547 に答える