El uso de SQLite en C #, cómo actualizar y trabajar con un archivo de base de datos generada?

StackOverflow https://stackoverflow.com/questions/4199686

  •  11-10-2019
  •  | 
  •  

Pregunta

Estoy desarrollando una aplicación .NET (C #) con un formato de archivo binario. El plan consiste en migrar a formato binario en un archivo de base de datos SQLite que es más fácil de mantener.

nunca he utilizado esto antes, así que tengo un par de preguntas.

  1. La aplicación de SQLite http://sqlite.phxsoftware.com/ contiene un proveedor de LINQ . He jugado con él a nivel local, pero de alguna manera tiene que incorporar esto en algo un equipo de desarrolladores puede utilizar. Puedo colocar el archivo de base de datos en mi PC en una carpeta que se incluye en el repositorio de código fuente, pero con el tiempo que debería terminar en la carpeta AppData clientes. ¿Cómo puedo lograr esto mediante un archivo de base de datos generada? Al crear el archivo de base de datos manualmente puedo decir fácilmente la aplicación de dónde guardarlo.

  2. Tengo un buen conocimiento de las consultas SQL, así que mi plan inicial era crear una biblioteca que hace un puerto de un DataModel a la base de datos mediante consultas SQL. La desventaja de esto es que cuando un campo cambia o se añade que tengo que actualizar muchas cosas: La base de datos crear la consulta, la actualización de base de datos o consultas alter, el DataModel. Por lo que sé que puedo crear una base de datos utilizando el diseñador, pero cuando mi aplicación se actualiza a la versión 2 el próximo mes y cambia mi base de datos que desea migrar la base de datos existente del usuario a la nueva versión. Hacer esto manualmente Puedo escribir consultas de actualización y el trabajo con algún tipo de contador base de datos incremental para comprobar esto, pero ¿cómo funciona utilizando una base de datos generada?

Por lo que es mejor, más fácil y más seguro para utilizar consultas SQL directamente, o me punto puede alguien para un caso de uso utilizable decente de utilizar una base de datos generada?

Gracias.

¿Fue útil?

Solución

En su primera pregunta que puedo sugerir que para que su aplicación en ASP.Net o hacer uso del servicio web (el segundo es más adecuado para sus objetivos). Para webservices Creo que debería codificar una sesión en la llamada de un método como este:

...
[WebMethod]
public DataSet GetData(object id, string sessionId)
{
   try
   {
      DataSet ds = null;
      CUser user = Global.GetSession(sessionId);

      lock
      {
         //Your code to get data from the database
      }
      return ds;
   }
   catch(Exception ex)
   {
       throw;
   }
}

Para su segunda pregunta que aconseja la utilización de FluentNhibernate. He usado FluentNhibernate y es muy fácil de modelar su base de datos e incluso generarla. Esta es sólo una muestra del código utilizado para configurar la aplicación SQLite;

private static ISessionFactory CreateSessionFactory()
{
  return Fluently.Configure()
    .Database(
      SQLiteConfiguration.Standard
        .UsingFile("firstProject.db")
    )
    .Mappings(m =>
      m.FluentMappings.AddFromAssemblyOf<Program>())
    .ExposeConfiguration(BuildSchema)
    .BuildSessionFactory();
}

private static void BuildSchema(Configuration config)
{
  // delete the existing db on each run
  if (File.Exists(DbFile))
    File.Delete(DbFile);

  // this NHibernate tool takes a configuration (with mapping info in)
  // and exports a database schema from it
  new SchemaExport(config)
    .Create(false, true);
}

Puede ver el FluentNhibernate wiki página y hay una aplicación de introducción de este marco. Por último al administrador de su base de datos SQLite le sugiero que utilice SQLite administrador .

text alt

Otros consejos

En primer lugar, los implementos System.Data.SQLite un proveedor de ADO.NET en primer lugar. los datos de código de su cadena de conexión es el archivo que desea manipular, sin embargo que se ejecutará en problemas con SQLite si usted está tratando de acceder a él desde múltiples lugares. Hay soluciones documentadas, aunque para hacer con un diario y niveles de bloqueo.

Para "crear" el PP en el PC del usuario, que puede almacenar ya sea un db vacía en un recurso y copiarlo en la ubicación, o abrir una nueva base de datos y ejecutar un crear un script para hacer las tablas / etc.

En segundo lugar, STOP. Si vas a ir por encima y más allá del de ADO.NET para abstraer la capa de datos, sólo tiene que utilizar una base de datos existente de abstracción, no construir su propio.

NHibernate , hay un controlador para SQLite también!

No estoy seguro de entender la pregunta 1. ¿Su necesidad programa para tomar un archivo de base de datos generada previamente y ponerlo en la carpeta Datos de programa del cliente, o necesita su programa para generar un nuevo archivo de base de datos cuando se ejecuta por la primera vez en la máquina cliente y luego almacenar el archivo de base de datos nuevos que aparezcan en la carpeta datos de programa.

En cuanto a la segunda pregunta, no entiendo lo que está tratando de hacer. Podrían aclarar y / o proporcionar una situación de ejemplo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top