Отображение URI в строковое поле в LINQ-to-SQL - PullRequest
2 голосов
/ 23 октября 2009

Я пытаюсь сохранить URI как строку в базе данных, используя LINQ.

[Column(Name = "Url", DbType = "nvarchar(255)")]
public Uri Url
{
    get
    {
        return new Uri(_url);
    }
    set
    {
        _url = value.AbsoluteUri;
    }
}

private string _url;

Это соответствует моему дизайну базы данных, однако, при попытке извлечь данные с помощью этого кода:

int id = 3;
_serie = new DataContext(connString).GetTable<Serie>();
var serie = _serie.FirstOrDefault(s => s.Id == id);

В последней строке я получаю исключение

System.InvalidCastException: Invalid cast from System.String to System.Uri etc

Что мне нужно сделать, чтобы правильно обрабатывать URI в моем коде, но сохранить это nvarchar (255) в моей базе данных? Это кажется простым, но я не могу понять, где я делаю это неправильно.

1 Ответ

5 голосов
/ 23 октября 2009

Как всегда, написание вопроса помогло мне понять проблему. Следующий код исправил мою проблему:

public Uri Url
{
    get
    {
        return new Uri(_url);
    }
    set
    {
        _url = value.AbsoluteUri;
    }
}

[Column(Name = "Url", DbType = "nvarchar(255)")]
private string _url;
...