2009-10-23 133 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;