0

バイナリファイル形式の.NET(C#)アプリケーションを開発しています。計画は、保守が容易なSQLiteデータベースファイルへのバイナリ形式への移行です。

これまで使ったことがないので、いくつか質問があります。

  1. http://sqlite.phxsoftware.com/のSQLite実装には、LINQプロバイダーが含まれています。ローカルで遊んだことがありますが、どういうわけか、開発者のチームが使用できるものにこれを組み込む必要があります。PCのソースリポジトリに含まれているフォルダにデータベースファイルを配置できますが、最終的にはクライアントのAppDataフォルダに配置されるはずです。生成されたデータベースファイルを使用してこれを実現するにはどうすればよいですか?データベースファイルを手動で作成すると、アプリケーションにファイルの保存場所を簡単に伝えることができます。

  2. 私はSQLクエリについて十分な知識を持っているので、最初の計画は、SQLクエリを使用してデータベースへのDataModelの移植を行うライブラリを作成することでした。これの欠点は、フィールドが変更または追加されたときに、多くのことを更新する必要があることです。データベースはクエリを作成し、データベースはクエリを更新または変更し、DataModelを更新します。収集したものから、デザイナーを使用してデータベースを作成できますが、アプリケーションが来月バージョン2に更新され、データベースが変更されたときに、ユーザーの既存のデータベースを新しいバージョンに移行したいと思います。これを手動で行うと、更新クエリを記述し、ある種のインクリメンタルデータベースカウンターを使用してこれを確認できますが、生成されたデータベースを使用すると、これはどのように機能しますか?

では、SQLクエリを直接使用する方が、より簡単で安全ですか、それとも、生成されたデータベースを使用する適切な使用例を誰かに教えてもらえますか?

ありがとう。

4

3 に答える 3

1

まず、何よりもまずSystem.Data.SQLiteADO.NETプロバイダーを実装します。接続文字列のデータソースは操作したいファイルですが、複数の場所からアクセスしようとすると、SQLiteで問題が発生します。ジャーナリングとロックレベルに関係する回避策が文書化されています。

ユーザーのPCにデータベースを「作成」するには、空のデータベースをリソースに保存してその場所にコピーするか、新しいデータベースを開いて作成スクリプトを実行してテーブルなどを作成します。

第二に、停止します。ADO.NETの呼び出しを超えてデータレイヤーを抽象化する場合は、既存のDB抽象化を使用するだけで、独自の抽象化を構築しないでください。

NHibernateをお勧めします。SQLiteのドライバーもあります。

于 2010-11-17T00:57:05.863 に答える
0

質問1を理解できません。プログラムは、事前に生成されたデータベースファイルを取得して、クライアントのAppDataフォルダーに配置する必要がありますか、それとも、プログラムを初めて実行するときに新しいデータベースファイルを生成する必要がありますか。クライアントマシンで、新しく生成されたデータベースファイルをAppDataフォルダーに保存します。

2番目の質問については、あなたが何をしようとしているのかわかりません。状況の例を明確にしたり、提供したりしていただけますか?

于 2010-11-17T01:04:00.453 に答える
0

最初の質問については、ASP.Netでアプリケーションを作成するか、Webサービスを利用することをお勧めします(2番目の質問の方が目的に適しています)。Webサービスの場合、次のようなメソッドの呼び出しでセッションをコーディングする必要があると思います。

...
[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;
   }
}

2番目の質問では、FluentNhibernateを使用することをお勧めします。私はFluentNhibernateを使用しており、データベースのモデル化や生成も非常に簡単です。これは、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);
}

FluentNhibernate wikiページを見ることができ、このフレームワークの導入実装があります。最後に、SQLiteデータベースを管理するには、SQLiteAdministratorを使用することをお勧めします

代替テキスト

于 2010-11-17T02:08:20.050 に答える