Mappatura di un URI sul campo String in LINQ-to-SQL
-
05-07-2019 - |
Domanda
Sto provando a memorizzare un URI come stringa in un database, usando LINQ.
[Column(Name = "Url", DbType = "nvarchar(255)")]
public Uri Url
{
get
{
return new Uri(_url);
}
set
{
_url = value.AbsoluteUri;
}
}
private string _url;
Questo si adatta perfettamente al design del mio database, tuttavia, quando provo a recuperare dati usando questo codice:
int id = 3;
_serie = new DataContext(connString).GetTable<Serie>();
var serie = _serie.FirstOrDefault(s => s.Id == id);
All'ultima riga, ottengo un'eccezione
System.InvalidCastException: Invalid cast from System.String to System.Uri etc
Cosa devo fare per gestire correttamente un URI nel mio codice, ma memorizzarlo è un nvarchar (255) nel mio database? Sembra semplice, ma non riesco a capire dove sto sbagliando.
Soluzione
Come sempre, scrivere la domanda mi ha aiutato a capire il problema. Il codice seguente ha risolto il mio problema:
public Uri Url
{
get
{
return new Uri(_url);
}
set
{
_url = value.AbsoluteUri;
}
}
[Column(Name = "Url", DbType = "nvarchar(255)")]
private string _url;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow