2017-04-13 2 views
0

xmlファイルのように書かれた文字列があります。例は次のようになります。C#でXMLのように書式設定された文字列を読み取る

string = <Employees><EmployeeId>1</EmployeeId><...></Employees> 

私は変更を監査したかったので、私はテーブルでこれを保存していますが、私は別の監査のために複数のテーブルを持っている必要はありませんでした。これは従業員以外の変更を記録するためです。だから、データベース内のXMLスタイルの文字列を使用することは良い提案のようでした。

現実のビジネスへ。私は、編集ページに行き、何も変えずに「保存」をクリックすることができるので、従業員が実際に変更されたことを確認したいと思います。現時点では、データはDBに書き込まれ、変更されていないデータでそれを混乱させるだけです。

私は、保存しようとしているXMLスタイルの文字列がデータベース上にあるかどうかを確認したいので、<employees><employeeid>###</employeeid> == "changes"の場合は、文字列全体が他と等しいかどうかを確認してください。基本的には、まず変更する必要がないためemployeeIdをチェックし、文字列全体をチェックして違いがあるかどうかを確認してください。私は最初のn個の数字をチェックしただけですが、ID番号の長さは1から3までです。

また、XML形式であるため、ファイルとその方法をチェック?

+0

はい使用するXML LINQ:XElementの従業員= XElement.Parse(文字列); – jdweng

+0

C#クラスを使用してxmlのデータを表すことができます。変更されたプロパティと元のプロパティを比較し、xmlにシリアル化します。 – Fabio

答えて

0

任意のデータを列に格納することは、非正規化の形式です。データベースレベルではそれほど多くのことをすることはできません。ただし、SQL Serverの列の種類はXMLです。 Entity FrameworkはXML列とのマッピングをサポートしていないため、XMLを標準文字列として扱うだけです。ただし、この列型では、XPath式を使用してXMLに対して実際のSQLクエリを記述できます。

あなたの最善の策は、XMLとして列を入力し、必要なクエリを実行するストアドプロシージャを記述することです。 Entity Frameworkでこのストアドプロシージャを利用できます。 XML列の型を参照してください。詳細については

https://msdn.microsoft.com/en-us/library/ms190798(SQL.90).aspx

関連する問題