davinci 0 Denunciar post Postado Novembro 21, 2007 Boa Tarde galera, Sou novo em .net, mas ja mecho com programação há algum tempo, porém nunca criei uma aplicação do nivel que estou criando agora. É o seguinte, estou criando uma aplicação utilizando Asp.net. Dividi a aplicação em camadas. Já criei a camada de acesso aos dados, porém estou com duvidas sobre a camada de negocios. Como devo organizar as minhas classes? Exemplo de caso: Tenho a classe VENDAS onde cada objeto VENDA possui um objeto do tipo VENDEDOR que indica o vendedor que realizou a venda. Se, por exemplo, eu listar todas as vendas (criarei varios objetos VENDA) os VENDEDORes se repetirão em outras vendas, entaum o objeto VENDEDOR será instanciado muitas vezes (em outros objetos VENDA) para o mesmo VENDEDOR. Bom e se no objeto VENDEDOR tiver uma propriedade que liste todas as vendas do VENDEDOR, quando eu realizar a listagem de vendas citada anteriormente os objetos VENDA (que possui um objeto VENDEDOR) carregara sua propriedade VENDEDOR que possuira o campo VENDAS que listara suas vendas, logo isso criara um loop infinito, numa chamada recursiva. Como posso modelar casos assim em que há esta situação de recursividade? Tenho algumas duvidas com relação a isso. Pode parecer até bastante idiota esta pergunta, mas gostaria de criar uma modelagem correta do sistema, e estas situações fogem dos meus conhecimentos. Ficarei muito feliz se alguem pudesse me ajudar. Até mais pessoal Compartilhar este post Link para o post Compartilhar em outros sites
André Baltieri 0 Denunciar post Postado Novembro 23, 2007 Davinci.. O que pode ser muito útil no seu caso, seriam os Namespaces. O resto você separa em propriedades e métodos que depois vão ser acessados pela UI... Segue abaixo um exemplo CLASSE CAMARA Imports System.Data Imports System.Data.SqlClient Imports Microsoft.VisualBasic Namespace Sino.BLL Public Class Camara #Region "Variáveis Locais" Public _id As Integer Public _tipo As String Public _titulo As String Public _texto As String Public _figura As String #End Region #Region "Propriedades" Public Property Id() As Integer Get Return _id End Get Set(ByVal value As Integer) _id = value End Set End Property Public Property Tipo() As String Get Return _tipo End Get Set(ByVal value As String) _tipo = value End Set End Property Public Property Titulo() As String Get Return _titulo End Get Set(ByVal value As String) _titulo = value End Set End Property Public Property Texto() As String Get Return _texto End Get Set(ByVal value As String) _texto = value End Set End Property Public Property Figura() As String Get Return _figura End Get Set(ByVal value As String) _figura = value End Set End Property #End Region #Region "Métodos" Public Function Selecionar(ByVal Id As Integer) As SqlDataReader Dim oConexao As New Sino.DAL.Conexao Dim drCamara As SqlDataReader Dim parametro As SqlParameter Dim parametros As New Collections.Generic.List(Of SqlParameter) parametro = New SqlParameter parametro.ParameterName = "Id" parametro.DbType = DbType.Int16 parametro.Value = Id parametros.Add(parametro) parametro = Nothing Try drCamara = oConexao.Selecionar("spCamara_selecionarPorId", parametros.ToArray) Catch ex As Exception Throw New System.Exception("Ocorreu uma falha ao tentar selecionar o item " & Id & "<br>Descrição do Erro: " & ex.Message.ToString) End Try If drCamara.Read Then _id = drCamara.Item("Id") _tipo = drCamara.Item("Tipo").ToString _titulo = drCamara.Item("Titulo").ToString _texto = drCamara.Item("Texto").ToString _figura = drCamara.Item("Figura").ToString End If Return drCamara oConexao = Nothing End Function Public Function Selecionar(ByVal Tipo As String) As SqlDataReader Dim oConexao As New Sino.DAL.Conexao Dim drCamara As SqlDataReader Dim parametro As SqlParameter Dim parametros As New Collections.Generic.List(Of SqlParameter) parametro = New SqlParameter parametro.ParameterName = "Tipo" parametro.DbType = DbType.String parametro.Value = Tipo parametros.Add(parametro) parametro = Nothing Try drCamara = oConexao.Selecionar("spCamara_selecionarPorTipo", parametros.ToArray) Catch ex As Exception Throw New System.Exception("Ocorreu uma falha ao tentar selecionar o item do tipo " & Tipo & "<br>Descrição do Erro: " & ex.Message.ToString) End Try If drCamara.Read Then _id = drCamara.Item("Id") _tipo = drCamara.Item("Tipo").ToString _titulo = drCamara.Item("Titulo").ToString _texto = drCamara.Item("Texto").ToString _figura = drCamara.Item("Figura").ToString End If Return drCamara oConexao = Nothing End Function #End Region End Class End Namespace Depois para usar a classe na UI, é só instanciar Imports Sino.BLL Dim oCamara as new Camara Camara.Selecionar(1) e assim vai... espero ter ajudado.. abraços Compartilhar este post Link para o post Compartilhar em outros sites