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
 

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

Preguntas similares