我决定在我的.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
?
非常感谢
答案 0 :(得分:1)
这取决于你需要的URI,假设你想要绝对的uri:
string uristring = uri_variable.AbsoluteUri;
您还可以检索用于构造uri的原始字符串:
string uristring = uri_variable.OriginalString;
这样你仍然使用URI,但你将它作为字符串保存在SQLite中。
编辑:
库抛出异常(Sqlite.cs的第2080行),因为未考虑System.Uri类型。 我认为它可以添加到列表中,然后转换为varchar(100)作为示例。当然这没有经过测试,我认为将其保存为字符串应该是最佳选择。