Tipo definido por el Usuario para mapear objetos

31/08/2008 - 23:29 por Anti_Work | Informe spam
Hola. Estoy tratando de aprender a registrar (en SQLServer2005) un ensamblado
de .Net y crear UTDs que se correspondan con las clases del ensamblado.

Hasta ahora, guiado por la ayuda, creé un proyecto en c#, de tipo "Base de
Datos", lo llame "DTSEmpleado". En el proyecto cree 2 clases: "Empleado y
"Direccion". Estas son las Clases:

using System;
using System.Collections.Generic;
using System.Text;
namespace DTSEmpleado
{
class Empleado
{
string _Apellido;
string _Nombres;
private Direccion _Direccion;

public string Apellido
{
get { return _Apellido; }
set { _Apellido = value; }
}

public String Nombres
{
get { return _Nombres; }
set { _Nombres = value; }
}

public Direccion Direccion
{
get { return _Direccion; }
set { _Direccion = value; }
}
public new string ToString() { return this.Apellido + ", " +
this.Nombres; }

}
}



using System;
using System.Collections.Generic;
using System.Text;

namespace DTSEmpleado
{
class Direccion
{
private string _Calle;
private string _Altura;

public string Calle
{
get { return _Calle; }
set { _Calle = value; }
}

public string Nro
{
get { return _Altura; }
set { _Altura = value; }
}

public new string ToString() { return this.Calle + " " + this.Nro; }
}
}

Luego desde el menú "Generar" elegi "Generar DTSEmpleado", me generó bien.
Despues elegí "ImplementarDTSEmpleado" y también finalizó bien. Esto ultimo
"Generar DTSEmpleado". según leí en la ayuda, registra el ensamblado en la
base de datos (que se llama Empresa). Y parece que me registró bien porque en
el arbol: Empresa-->Programmaility-->Assemblies se encuetra DTSEmpleado.

Despues ejecute el siguiente script:

USE [Empresa]
GO
CREATE TYPE dbo.Empleado
EXTERNAL NAME DTSEmpleado.Empleado;

y me muestra el siguiente mensaje:
Msg 6556, Level 16, State 1, Line 8
Error de CREATE TYPE porque no se encontró el tipo 'Empleado' en el
ensamblado 'DTSEmpleado'.
Msg 6597, Level 16, State 1, Line 8
Error de CREATE TYPE.

¿Como se soluciona esto? ¿Algun link a un buen tutorial o ejemplos?

Gracias desde ya . Saludos

Preguntas similare

Leer las respuestas

#1 Rubén Garrigós
31/08/2008 - 23:50 | Informe spam
Posiblemente el problema es que no estás indicando correctamente el nombre de
la clase. Revisa el espacio de nombres que estés utilizando en tu ensamblado.
En caso de duda si tienes la DLL ya compilada puedes probar con Reflector u
otro desensamblador .NET.

Por otra parte, desde mi punto de vista, diseñar entidades como las que
comentas Empleado, Dirección para crear estructuras que podrían ser
perfectamente relacionales trae más problemas que beneficios.

Rubén Garrigós
Solid Quality Mentors

"Anti_Work" wrote:

Hola. Estoy tratando de aprender a registrar (en SQLServer2005) un ensamblado
de .Net y crear UTDs que se correspondan con las clases del ensamblado.

Hasta ahora, guiado por la ayuda, creé un proyecto en c#, de tipo "Base de
Datos", lo llame "DTSEmpleado". En el proyecto cree 2 clases: "Empleado y
"Direccion". Estas son las Clases:

using System;
using System.Collections.Generic;
using System.Text;
namespace DTSEmpleado
{
class Empleado
{
string _Apellido;
string _Nombres;
private Direccion _Direccion;

public string Apellido
{
get { return _Apellido; }
set { _Apellido = value; }
}

public String Nombres
{
get { return _Nombres; }
set { _Nombres = value; }
}

public Direccion Direccion
{
get { return _Direccion; }
set { _Direccion = value; }
}
public new string ToString() { return this.Apellido + ", " +
this.Nombres; }

}
}



using System;
using System.Collections.Generic;
using System.Text;

namespace DTSEmpleado
{
class Direccion
{
private string _Calle;
private string _Altura;

public string Calle
{
get { return _Calle; }
set { _Calle = value; }
}

public string Nro
{
get { return _Altura; }
set { _Altura = value; }
}

public new string ToString() { return this.Calle + " " + this.Nro; }
}
}

Luego desde el menú "Generar" elegi "Generar DTSEmpleado", me generó bien.
Despues elegí "ImplementarDTSEmpleado" y también finalizó bien. Esto ultimo
"Generar DTSEmpleado". según leí en la ayuda, registra el ensamblado en la
base de datos (que se llama Empresa). Y parece que me registró bien porque en
el arbol: Empresa-->Programmaility-->Assemblies se encuetra DTSEmpleado.

Despues ejecute el siguiente script:

USE [Empresa]
GO
CREATE TYPE dbo.Empleado
EXTERNAL NAME DTSEmpleado.Empleado;

y me muestra el siguiente mensaje:
Msg 6556, Level 16, State 1, Line 8
Error de CREATE TYPE porque no se encontró el tipo 'Empleado' en el
ensamblado 'DTSEmpleado'.
Msg 6597, Level 16, State 1, Line 8
Error de CREATE TYPE.

¿Como se soluciona esto? ¿Algun link a un buen tutorial o ejemplos?

Gracias desde ya . Saludos

Respuesta Responder a este mensaje
#2 Anti_Work
02/09/2008 - 05:54 | Informe spam
Gracias por contestar.
Los nombres los copié y pegué, justamente para evitar ese tipo de errores.
Reflector no se lo que es, aunque deduzco, por lo que me dices que es una
herramienta que me sirve para registrar ensamblados. ¿ Reflector viene con
vs2005?.
Respecto a la conveniencia de usa o no objetos en la db, no lo se, yo solo
estoy tratando de aprender a hacerlo. Pero me imagino que tienes razon en que
para un problema tan simple no vale la pena.

Saludos. Gracias
Respuesta Responder a este mensaje
#3 Alfredo Novoa
02/09/2008 - 09:58 | Informe spam
Hola,

El Mon, 1 Sep 2008 20:54:01 -0700, Anti_Work escribió:

Respecto a la conveniencia de usa o no objetos en la db, no lo se, yo solo
estoy tratando de aprender a hacerlo. Pero me imagino que tienes razon en que
para un problema tan simple no vale la pena.



No es que no valga la pena, es que es mucho peor.


Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida