2011-02-18 97 views
9

很簡單的問題。我有一個模型,它的屬性是System.Uri類型。 Uri s沒有默認的無參數構造函數,也沒有ID字段。有什麼方法可以覆蓋我的模型生成器以自定義的方式將其存儲在數據庫中(例如,就像string)?在NHibernate中,我通過實現IUserType來完成此操作,但在CodeFirst中我找不到類似的機制。使用實體框架Fluent Api映射System.Uri

很顯然,我可以創建一個使用Uri引擎蓋下和定期公開可映射特性&構造一個自定義類型,我只是好奇,如果有任何的方式來映射這個系統類型,這樣我就不必做這樣的包裝。

回答

7

EF不支持NH等自定義類型映射。

對於System.Uri特別是,我會使用包裝屬性並將實際值映射爲字符串;它沒有那麼壞。

+0

是的,我最終做的只是使用一個字符串,然後做一個DataType驗證屬性。 – Paul 2011-02-18 15:59:51

+0

作爲實體框架5支持枚舉 – Odys 2013-11-30 14:22:53

0

嘗試這樣做..

[Column(Name="MyUri", TypeName="string")] 
public Uri MyUri 

請確保您添加所需的列屬性

using System.ComponentModel.DataAnnotations; 

希望幫助參考...

2

不幸的是,沒有直接的方法帶有EF的地圖System.Uristring

你可以使用,無論數據註釋和屬性您的網址屬性,如下所示:

[DataType(DataType.Url)] 
public string Link { get; set; } 

這將能夠告訴一些服務,這應該顯示和驗證作爲URL(ASP.NET和Silverlight例如已經建立了對它的支持)。