with net convertir c# .net vb.net dataset

net - xml dataset c#



Conexión de DataSet con tipo: ¿se requiere tener una en el archivo.xsd? (5)

En el archivo .xsd para un DataSet tipeado en .NET, hay una sección <Connections> que contiene una lista de las conexiones de datos que he usado para configurar DataTables y TableAdapters.

Hay momentos en los que preferiría no tenerlos allí. Por ejemplo, a veces prefiero pasar una cadena de conexión a un constructor personalizado y usar eso en lugar de buscar uno en la configuración, .config, etc.

Pero parece que si elimino las cadenas de conexión de esa sección (dejándolas vacías) o elimino la sección por completo, la herramienta de generación de código DataSet se asusta. Mientras que si no los elimino, el DataSet se resiente cuando lo coloco en un proyecto diferente porque no puede encontrar la configuración para esas cadenas de conexión.

¿Hay alguna manera en que pueda decirle a un DataSet tipeado que no se preocupe por ninguna conexión? (Obviamente tendré que darle una conexión si cambio cualquier TableAdapter SQL o procs almacenados, pero ese debería ser mi problema).


Esto me ha molestado por mucho tiempo también y hice algunas pruebas recientemente. Esto es lo que se me ocurrió. Para el registro, estoy usando VS 2008 SP1.

  • Los conjuntos de datos almacenarán la información de la cadena de conexión, tanto si los quiere como si no.
  • Puede asegurarse de que los conjuntos de datos no almacenen contraseñas en sus cadenas de conexión.
  • Puede tener la cadena de conexión almacenada en la sección ''conexiones'' del archivo .xsd o puede tenerla almacenada en el archivo app.config y referenciada desde la sección ''conexiones'' del archivo .xsd. De cualquier manera, la sección ''conexiones'' parece ser un requisito.

Si encuentra una manera de hacerlo funcionar, publique aquí. Actualmente, almaceno la cadena de conexión en el archivo xsd y me aseguro de que no estoy almacenando la contraseña. Luego, cuando lo uso código, siempre creo mi propia conexión y nunca uso una almacenada en el conjunto de datos.


En un caso similar, almacené la cadena de conexión para el conjunto de datos en un archivo de configuración / app.config (comportamiento predeterminado en Visual Studio al crear un conjunto de datos) con seguridad integrada en una base de datos de desarrollo local. Para poder acceder a esto desde proyectos externos, cambié el archivo de configuración para que sea public lugar del internal predeterminado (en el diseñador visual). Esto dio como resultado un código similar (en Properties / Settings.Designer.cs):

public sealed partial class Settings { [...] [global::System.Configuration.DefaultSettingValueAttribute ("Data Source=.;Initial Catalog=MyDb;Integrated Security=True;")] public string MyConnectionString { get { return ((string)(this["MyConnectionString"])); } } }

Luego, modifiqué manualmente la propiedad para incluir también un public setter:

public string MyConnectionString { get { return ((string)(this["MyConnectionString"])); } set { this["MyConnectionString"] = value; } }

Finalmente establecí la cadena de conexión de un proyecto externo como:

MyDataAccessLibrary.Properties.Settings.Default.MyConnectionString = ...


La mejor manera de hacer esto será crear una conexión en tiempo de ejecución con su cadena de conexión preferida y asignarle TableAdapter.Connection. Esto funcionó para mí en el pasado.

En segundo lugar, si elimina la sección <connections> de xsd seguramente arrojará un error porque no solo se usa en tiempo de ejecución, sino que también lo utiliza el diseñador de conjuntos de datos visuales en tiempo de diseño para buscar el esquema de la base de datos subyacente para que pueda diseñar el Dataset mecanografiado en el diseñador. ¡Entonces, <connections> estará allí para el diseñador del conjunto de datos! :)



Para responder tu pregunta,

No es necesario que especifique un nombre de base de datos en la cadena de conexión para que funcione el IDE del conjunto de datos. SOLO tiene que especificar un SERVIDOR que funcione.

Usamos la siguiente cadena de conexión para apuntar a nuestro servidor local sin especificar una base de datos.

<add name="MyConnectionString" connectionString="data source=.;Integrated Security=SSPI" providerName="System.Data.SqlClient" />

Esto le permitirá trabajar con conjuntos de datos, cambiar consultas, editar / eliminar columnas, sin tener que tener una conexión a una base de datos real. Algunas características aún requerirán que especifique una base de datos, pero podrá hacer mucho más que antes. Dale un tiro.