在LINQ-to-SQL中将URI映射到String-field

Jon*_*oln 2 c# uri linq-to-sql columnattribute

我正在尝试使用LINQ将URI作为字符串存储在数据库中.

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

private string _url;
Run Code Online (Sandbox Code Playgroud)

但是,当尝试使用以下代码获取数据时,这很好地映射到我的数据库设计:

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

在最后一行,我得到一个例外

System.InvalidCastException: Invalid cast from System.String to System.Uri etc
Run Code Online (Sandbox Code Playgroud)

我需要做什么来正确处理我的代码中的URI,但在我的数据库中存储它是一个nvarchar(255)?这似乎很简单,但我无法弄清楚我做错了什么.

Jon*_*oln 5

一如既往,写下问题有助于我实现这个问题.以下代码修复了我的问题:

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

[Column(Name = "Url", DbType = "nvarchar(255)")]
private string _url;
Run Code Online (Sandbox Code Playgroud)