2016-12-02 3 views
1

私は.NETアプリケーションでSQLite3を使用することに決めました。私のエンティティにはSystem.Uriのプロパティが定義されています。 私がやって、SQLite-netを使用しようとしている:System.UriをSqlite3に保存

var myEntities = 
    Enumerable 
    .Range(1, 100) 
    .Select(id => 
     new MyEntity() 
     { 
      Id = id, 
      StringProp = $"{nameof(MyEntity)} #{id}", 
      DateTimeProp = DateTime.Now.AddDays(id), 
      UriProp = new Uri("...") 
     }); 

using (var conn = new SQLiteConnection(dbFilePath)) 
{ 
    conn.CreateTable<MyEntity>(); 
    conn.InsertAll(myEntities); 
} 

を私が得るすべてがある:"System.NotSupportedException: 'Don't know about System.Uri'"

System.Uriをそのまま使用してstringと保存する方法はありますか?

string uristring = uri_variable.AbsoluteUri; 

あなたはまた、URIを構築するために使用される元の文字列を取得することができます。

は、それはあなたがURIから必要なものに依存して、あなたは絶対URIをしたいとしましょう、あなたに非常に多くの

答えて

0

ありがとう:

string uristring = uri_variable.OriginalString; 

このようにしてもURIを使用できますが、SQLiteで文字列として保存します。

EDIT:タイプ可能System.Uriを考慮に入れていないため

ライブラリは、例外(Sqlite.csのライン2080)スロー。 私はこれをリストに追加して、varchar(100)に変換することができると思います。もちろん、これはテストされていません、私は文字列として保存することが行く方法でなければならないと信じています。

+0

ここで問題となるのは、SQLiteのデータ型には 'Uri'がネイティブに含まれていないため、SQLite/-netにシリアライズ方法を知らせるためのマッピング機能(属性やマッピングメソッドなど)があるかどうか疑問です'System.Uri'オブジェクトと、どのタイプの類似性を使用するか(および逆直列化します)。 – Sergio

+0

conn.CreateTableでクラッシュしますか? – farbiondriven

+0

はい:私が書いたように、System.Uriを知らない「System.NotSupportedException」が発生します – Sergio

関連する問題