La base de datos que usaremos en el ejemplo se llama prueba y trabajaremos sobre la tabla empleado que tiene los siguientes campos:
Listo, ahora nos vamos a trabajar con la capa entidad(CEntidad) especificamente sobre la clase: Clase_Empleado y lo primero que debemos fijarnos es que sea Public:
Public
Class Clase_Empleado
en VB parece que no es un problema porque al agregar una clase la crea como Public pero en C# si se deberá especificar, por el momento sigamos y nos vamos a basar en la tabla empleados, lo que haremos sera crear un atributo y propiedad respectiva para cada campo en la tabla empleado, esto para hacer referencia a la tabla mientras realizamos operaciones sobre la base de datos, entonces el código para Clase_Empleado es:
Public Class Clase_Empleado
    Private
codigo_ As String
    Private
nombres_ As String
    Private
departamento_ As String
    Private
cargo_ As String
    Private
jefe_ As String
    Public Property codigo() As String
        Get
            Return
codigo_
        End Get
        Set(ByVal value As String)
            codigo_ = value
        End Set
    End Property
    Public Property nombres() As
String
        Get
            Return nombres_
        End Get
        Set(ByVal value As String)
            nombres_ = value
        End Set
    End Property
    Public Property cargo() As String
        Get
            Return
cargo_
        End Get
        Set(ByVal value As String)
            cargo_ = value
        End Set
    End Property
    Public Property jefe() As String
        Get
            Return
jefe_
        End Get
        Set(ByVal value As String)
            jefe_ = value
        End Set
    End Property
    Public Property departamento() As
String
        Get
            Return
departamento_
        End Get
        Set(ByVal value As String)
            departamento_ = value
        End Set
    End Property
End Class
Bueno, ahora nos vamos a la capa de datos=CDatos y hacemos la conexión a la base de datos y sera aquí donde se realizaran todas las acciones sobre empleado(Actualizar, Eliminar, Modificar y Consultar), nos queda así:
Imports
CEntidad
Imports
System.Data
Imports
System.Data.SqlClient
Imports
System.Configuration
Public
Class Clase_Datos
    Dim
conexion As String
= ConfigurationManager.ConnectionStrings("cnn").ConnectionString
    Public Function MostrarDatos() As
List(Of Clase_Empleado)
        Dim
lista As New List(Of Clase_Empleado)
        Dim dr As SqlDataReader =
Nothing
        Using
Sql As New SqlConnection(conexion)
            Sql.Open()
            Using
cmd As New SqlCommand("SeleccionarDatos",
Sql)
                cmd.Connection = Sql
                cmd.CommandType = CommandType.StoredProcedure
                dr = cmd.ExecuteReader
                While
dr.Read
                    Dim
list As New Clase_Empleado
                    list.codigo = dr.Item("codigo")
                   
list.nombres = dr.Item("nombres")
                   
list.cargo = dr.Item("cargo")
                   
list.jefe = dr.Item("jefe")
                   
list.departamento = dr.Item("departamento")
                   
lista.Add(list)
                End
While
            End
Using
        End Using
        Return
lista
    End Function
    Public Function IngresarDatos(datos As
Clase_Empleado) As
Boolean
        If
datos Is Nothing
Then
            Throw New ArgumentException("no
se recibieron datos en InsertarDatos")
        End If
        Dim
trans As SqlTransaction
= Nothing
        Dim
codigo As String
= datos.codigo
        Dim
nombres As String
= datos.nombres
        Dim
cargo As String
= datos.cargo
        Dim
jefe As String
= datos.jefe
        Dim
departamento As String
= datos.departamento
        Try
        Using
Sql As New SqlConnection(conexion)
            Sql.Open()
            trans = Sql.BeginTransaction(IsolationLevel.ReadCommitted)
            Using
cmd As New SqlCommand("InsertarDatos",
Sql, trans)
                    cmd.Transaction=trans
                    cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.AddWithValue("@codigo", codigo)
               
cmd.Parameters.AddWithValue("@nombres",
nombres)
               
cmd.Parameters.AddWithValue("@cargo",
cargo)
               
cmd.Parameters.AddWithValue("@jefe",
jefe)
               
cmd.Parameters.AddWithValue("@departamento",
departamento)
                   
If (cmd.ExecuteNonQuery = 1) Then
                        trans.Commit()
                        Return True
                    Else
                        Return False
                    End
If
                End
Using
        End Using
        Catch
ex As Exception
            trans.Rollback()
            Return
False
            Throw
New ArgumentException("Verificar InsertarDatos")
        End Try
    End Function
Public Function ModificarDatos(datos As Clase_Empleado) As Boolean
        If
datos Is Nothing
Then
            Throw
New ArgumentException("no se recibieron datos en ModificarDatos")
        End If
        Dim
trans As SqlTransaction
= Nothing
        Dim
codigo As String
= datos.codigo
        Dim
nombres As String
= datos.nombres
        Dim cargo As String = datos.cargo
        Dim
jefe As String
= datos.jefe
        Dim
departamento As String
= datos.departamento
        Try
            Using
Sql As New SqlConnection(conexion)
                Sql.Open()
                trans = Sql.BeginTransaction(IsolationLevel.ReadCommitted)
                Using
cmd As New SqlCommand("ModificarDatos",
Sql, trans)
                    cmd.Transaction = trans
                    cmd.CommandType = CommandType.StoredProcedure
                    cmd.Parameters.AddWithValue("@codigo", codigo)
                   
cmd.Parameters.AddWithValue("@nombres",
nombres)
                   
cmd.Parameters.AddWithValue("@cargo",
cargo)
                   
cmd.Parameters.AddWithValue("@jefe",
jefe)
                   
cmd.Parameters.AddWithValue("@departamento",
departamento)
                   
If (cmd.ExecuteNonQuery = 1) Then
                        trans.Commit()
                        Return True
                    Else
                        Return False
                    End
If
                End
Using
            End
Using
        Catch
ex As Exception
            trans.Rollback()
            Return
False
            Throw
New ArgumentException("Verificar ModificarDatos")
        End Try
    End Function
    Public Function EliminarDatos(param As
String) As Boolean
        Dim trans As SqlTransaction = Nothing
        Try
            Using
Sql As New SqlConnection(conexion)
                Sql.Open()
                trans = Sql.BeginTransaction(IsolationLevel.ReadCommitted)
                Using
cmd As New SqlCommand("BorrarDatos",
Sql, trans)
                    cmd.CommandType = CommandType.StoredProcedure
                    cmd.Parameters.AddWithValue("@codigo", param)
                    If
(cmd.ExecuteNonQuery = 1) Then
                        trans.Commit()
                        Return True
                    Else
                        Return False
                    End
If
                End
Using
            End
Using
        Catch
ex As Exception
            trans.Rollback()
            Throw
New ArgumentException("Error en BorrarDatos")
        End Try
    End Function
End Class
Vamos ahora con la clase negocio
Imports CDatos
Imports CEntidad
Public Class Clase_Negocio
    Dim objdatos As New CDatos.Clase_Datos
    Public Function Mostrar() As List(Of Clase_Empleado)
        Return objdatos.MostrarDatos
    End Function
    Public Function
IngresarDatos(datos As Clase_Empleado)
As Boolean
        Return objdatos.IngresarDatos(datos)
    End Function
    Public Function ModificarDatos(datos As Clase_Empleado) As Boolean
        Return
objdatos.ModificarDatos(datos)
    End Function
    Public Function EliminarDatos(codigo As String) As Boolean
        Return objdatos.EliminarDatos(codigo)
    End Function
End Class
y por ultimo el formulario que queda así y su respectivo código
Imports
CEntidad
Imports
CNegocio
Public
Class Show
    Dim objnegocio As New CNegocio.Clase_Negocio
    Private Sub Show_Load(sender As System.Object,
e As System.EventArgs)
Handles MyBase.Load
        cargar()
    End Sub
    Private Sub cargar()
        Dim bs As New BindingSource
        bs.DataSource = objnegocio.Mostrar
        DataGridView1.DataSource = bs
        BindingNavigator1.BindingSource = bs
        TCodigo.DataBindings.Clear()
        TCodigo.DataBindings.Add(New Binding("text", bs, "codigo"))
        TNombres.DataBindings.Clear()
        TNombres.DataBindings.Add(New Binding("text", bs, "nombres"))
        TCargo.DataBindings.Clear()
        TCargo.DataBindings.Add(New Binding("text", bs, "cargo"))
        TJefe.DataBindings.Clear()
        TJefe.DataBindings.Add(New Binding("text", bs, "jefe"))
        TDepartamento.DataBindings.Clear()
        TDepartamento.DataBindings.Add(New Binding("text", bs, "departamento"))
    End Sub
    Private Sub BAgregar_Click(sender As
System.Object, e As
System.EventArgs) Handles
BAgregar.Click
        Dim lista As New Clase_Empleado
        If (Not (String.IsNullOrEmpty(TCodigo.Text))) Then
            lista.codigo = Trim(TCodigo.Text)
        Else
           
ErrorProvider1.SetError(TCodigo, "Codigo")
        End If
        If (Not (String.IsNullOrEmpty(TNombres.Text)))
Then
            lista.nombres = TNombres.Text
        Else
           
ErrorProvider1.SetError(TNombres, "Nombres")
        End If
        If (Not (String.IsNullOrEmpty(TCargo.Text)))
Then
            lista.cargo = TCargo.Text
        Else
           
ErrorProvider1.SetError(TCargo, "Cargo")
        End If
        If (Not (String.IsNullOrEmpty(TJefe.Text)))
Then
            lista.jefe = TJefe.Text
        Else
            ErrorProvider1.SetError(TJefe, "Jefe")
        End If
        If (Not (String.IsNullOrEmpty(TDepartamento.Text)))
Then
            lista.departamento = TDepartamento.Text
        Else
           
ErrorProvider1.SetError(TDepartamento, "Departamento")
        End If
        If
objnegocio.IngresarDatos(lista) = True Then
            MessageBox.Show("datos
agregados exitosamente")
           
cargar()
        Else
            MessageBox.Show("Datos
no se agregaron")
        End If
    End Sub
    Private Sub
BModificar_Click_1(sender As System.Object, e As
System.EventArgs) Handles
BModificar.Click
        Dim lista As New Clase_Empleado
       
lista.codigo = CStr(DataGridView1.CurrentRow.Cells(0).Value)
        If (Not (String.IsNullOrEmpty(TNombres.Text))) Then
           
lista.nombres = TNombres.Text
        Else
           
ErrorProvider1.SetError(TNombres, "Nombres")
        End If
        If (Not (String.IsNullOrEmpty(TCargo.Text))) Then
           
lista.cargo = TCargo.Text
        Else
           
ErrorProvider1.SetError(TCargo, "Cargo")
        End If
        If (Not (String.IsNullOrEmpty(TJefe.Text))) Then
           
lista.jefe = TJefe.Text
        Else
           
ErrorProvider1.SetError(TJefe, "Jefe")
        End If
        If (Not (String.IsNullOrEmpty(TDepartamento.Text))) Then
           
lista.departamento = TDepartamento.Text
        Else
           
ErrorProvider1.SetError(TDepartamento, "Departamento")
        End If
        If objnegocio.ModificarDatos(lista) = True Then
            MessageBox.Show("Datos
se modificaron exitosamente")
           
cargar()
        Else
            MessageBox.Show("Datos
no se modificaron")
        End If
    End Sub
    Private Sub BEliminar_Click_1(sender As
System.Object, e As
System.EventArgs) Handles
BEliminar.Click
        Dim
codigo As String
= CStr(DataGridView1.CurrentRow.Cells(0).Value)
        If objnegocio.EliminarDatos(codigo) = True Then
            MessageBox.Show("Registro
eliminado")
           
cargar()
        Else
            MessageBox.Show("registro
no fue eliminado")
        End If
    End Sub
End
Class
eso es todo :)


