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.

È stato utile?

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
scroll top