Я создаю новый способ сделать что-то в своем проекте, и мне нужна какая-то помощь в какой-то момент. У меня есть 3 проекта в моем решении:Circle reference (поставщик -> модель -> поставщик)
Бизнес, провайдер и модель.
модель проекта, является тот, что у меня есть классы, так же, как таблицы в базе данных: Ex:
public class Person
property Id as integert?
property Name as string
property CPF as string
end class
проект ПРОВАЙДЕР, это тот, который делает связь с базой данных:
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 для веб-сайта (веб-сайт не должен иметь доступ к ПРОВАЙДЕРУ, потому что у нас есть бизнес-логика в БИЗНЕСЕ)
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
Но, я пришел к проблеме, когда мне нужно некоторые внутренние соединения, как это:
таблицы КЛИЕНТ имеет id_person, поэтому в model.Customer у меня есть свойство IdPerson как целое?
, но я хочу, чтобы иметь свойство Имени и СПЛ, что model.Person есть, только для чтения свойства в 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
и здесь возникает вопрос .. . Я обнаружил, что я не могу иметь ссылки как:
сайт справочной модели и бизнеса
поставщика эталонной модели
Бизнес эталонной модели и Прит IDER
но делать только для чтения свойств модели требуется ссылка на поставщик, и что вызывает круг reference..visual студии не позволяет мне сделать это ...
идеи, как сделать это?
Извините, что мое сообщение стало таким длинным, я просто хотел прояснить ситуацию.
хм, извините, но я не могу понять .. как это я заполняю объект Person на веб-сайте, чтобы передать его бизнесу, если у меня нет ссылки на модель? –
Новый класс будет использоваться для заполнения экземпляра Person, а экземпляр нового класса (и, следовательно, экземпляр Person) можно передать в Business. – xpda