2017-06-30 18 views
1

SQL ServerにC#オブジェクトを格納したいと思います。私は、次のオプションを考えた:SQL ServerデータベースにC#オブジェクトを格納

  1. 読むオブジェクトバイトメモリストリームおよびそれらをデータベースに保存します(ただし、SQLで 読めない)、読み、
  2. JSON変換する簡単ですが、どのようなデータ型?
  3. XML(SQL 2016用のみのデータ型)、読みにくくビット、変換しやすい、XMLデータ型

SQL列にC#のオブジェクトを格納するためのベストプラクティスは何ですか、なぜあるのでしょうか? SQL 2014を使用していますので、オプション3が最善の策だと思いますか?

編集: 注:照会するデータではありません。私はメモリ内のC#オブジェクトにキャッシュしたオブジェクトをロードしたいだけです。そして、C#のロジックを実行します。そのため、別のデータベースからデータを取得するのに時間がかかります。したがって、すべてのデータをカスタムオブジェクトに保存します。したがって、私はORMを使うべきではないと思う。

+2

人は通常、Entity FrameworkのようなORMツールを使用します。通常は、それらを保存したいだけでなく、クエリも保存します。 –

+0

これは本当にオプション2と3の間の優先事項です。私はXMLを好むでしょうが、XMLまたはJSONのいずれかに有効な引数があります。 – gmiley

+0

このような動的オブジェクトのみを格納します。入力されたクラスがある場合は、@AlexeyZimarevが示唆するようにORMを使用します。 – Filburt

答えて

1

データベースを投げ込んで、ある時点でキーで読み返したい場合は、(2)に進み、nvarchar(max)フィールドタイプを使用するだけです。

照会するデータの場合は、照合するスキーマを設計してORMを使用する必要があります。

+0

ここでORMを動作させるには、OPに別のテーブルと外部キーが必要です。詳細に含める必要があります –

+0

ORMを使用できません。私はすべてのデータを+ 200MBのメモリに保存して分析したいからです。しかしそれはおよそかかります。 200MBのデータを収集するために2日間(アズールテーブルストレージから)。したがって、アプリケーションを再起動してメモリをクリーンアップする必要がある場合に備えて、どこかに格納したいと思っています。 – user1408786

+0

なぜORMを使用すると、200MBを素早く保存したり、すばやく検索したりできなくなるのですか?それがスピードを落としても、ローカルマシンにSQL Expressをインストールしてそこにデータを保存するだけではいかがですか?そうすれば、スピードの問題なくORMを使用することができます。 – ohyeah

0

オプションBのほうが肯定的であれば、SQL Serverに任意のオブジェクト[またはデータ型]のjson-serialized文字列をNVARCHAR(MAX)フィールドとして格納できます。

これを読みたい場合は、その文字列を元の形式で簡単に逆シリアル化できます。

私は、JSONのシリアライズのために行くだろう

Demo d1=new Demo(); 

//store this json into database. 
string json= JsonConvert.SerializeObject(d); 

// Now while reading fron db 
Demo d2= JsonConvert.DeserializeObject<Demo>(json); 
0

、それは単なるテキストなので、あなたが任意の言語でJSONを読み書きできるよう、あなたがカバーしている「ユーザープロファイル設定」または構造データの他のタイプのようなものを保存するとき。 SQLサーバーはこれを理解しています.8-10年前のような誇大宣伝だったXMLサポートのように、すべてを修正する必要があるときなど、データを更新する必要がある人にはTSQLのサポートが豊富なJSONを保存できるようになりましたすべてのユーザーの更新情報...

とにかく、記事をご覧ください。 JSON in SQL Server 2016-2017 JSONとの間では、日付や小数点などの地域固有の設定に応じて、いくつかのデータ型が前と後ろに変換されないため、プロパティをテストする必要があります。

関連する問題