将System.Uri存储在Sqlite3中

时间:2016-12-02 13:58:33

标签: c# .net sqlite sqlite-net

我决定在我的.NET应用程序中使用SQLite3,并且在我的实体中定义了一些System.Uri属性。 我正在尝试使用SQLite-net,执行:

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

非常感谢

1 个答案:

答案 0 :(得分:1)

这取决于你需要的URI,假设你想要绝对的uri:

string uristring = uri_variable.AbsoluteUri;

您还可以检索用于构造uri的原始字符串:

string uristring = uri_variable.OriginalString;

这样你仍然使用URI,但你将它作为字符串保存在SQLite中。

编辑:

库抛出异常(Sqlite.cs的第2080行),因为未考虑System.Uri类型。 我认为它可以添加到列表中,然后转换为varchar(100)作为示例。当然这没有经过测试,我认为将其保存为字符串应该是最佳选择。