私は自分のプロジェクトで物事を行うための新しい方法を作成していますが、ある時点で助けが必要です. 私のソリューションには 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
ここで質問が来ます...私は次のような参照を持つことができないことがわかりました:
ウェブサイト参照モデルとビジネス
プロバイダー参照モデル
ビジネス参照モデルとプロバイダー
しかし、読み取り専用のプロパティを実行するには、モデルがプロバイダーへの参照を必要とし、それにより円参照が発生します..ビジュアルスタジオでは、これを行うことができません...
これを行う方法はありますか?
私の投稿が長くなって申し訳ありませんが、物事を明確にしたかっただけです。