2013-09-22 52 views
0

我正在創建一種新方法來完成項目中的事情,並且我需要一些幫助。 我在我的解決方案中有3個項目:Circle reference(提供者 - >模型 - >提供者)

Buusiness,Provider and Model。

樣板工程,是一個,我有課就像在數據庫中的表: 例:

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方法的項目(該網站不能訪問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爲整數?

,但我希望有屬性名稱和CPF的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 

和來這裏的問題..我發現,我不能有像參考:

網站參考模型和業務

提供參考模型

業務參考模型和箴言伊德爾

但要做到只讀屬性的模型需要參考提供商,並導致了一圈reference..visual Studio不允許我這樣做......

任何想法如何做到這一點?

對不起,我的帖子變得這麼長,我只是想弄清楚。

回答

0

您可以添加另一個引用Provider和Person的類,而不是通過Website和Business(而不是Website和Business直接引用Person)引用這個新類。

+0

嗯抱歉,但我不明白.. 如何我填充一個Person對象在網站上傳遞給業務,如果我沒有參考模型? –

+0

新類將用於填充Person實例,並且可以將新類的實例(以及Person實例)傳遞給Business。 – xpda