2009-10-23 131 views
2

我试图使用LINQ将URI作为字符串存储在数据库中。将URI映射到LINQ到SQL中的字符串字段

[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)?这似乎很简单,但我无法弄清楚我做错了什么。

回答

5

一如既往,写下这个问题帮助我意识到了这个问题。以下代码解决了我的问题:

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

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