2011-03-27 62 views
1

我想將TimeZoneInfo類型的模型屬性映射到數據庫中的列。在NHib中,我只是做了一個IUserType「TimeZoneInfoString」來回轉換,然後使用typedef。我如何使用Entity Framework 4.0來完成這種工作?EF4相當於NHibernate IUserType

回答

3

實體框架不等同於NHibernate的用戶類型。您必須在實體中爲其創建單獨的屬性,並僅映射字符串屬性。 Somethink like:

public partial class MyEntity 
{ 
    public TimeZoneInfo TimeZone 
    { 
     get 
     { 
      return Parse(TimeZoneInfoString); 
     } 
     set 
     { 
      TimeZoneInfoString = value.ToString(); 
     } 
    } 
} 

如果這個類是你自動生成的實體的一部分。 TimeZoneInfoString屬性映射在您的實體中,ParseToString包含您的轉換邏輯。

+0

這是如何影響查詢的?例如,context.MyEntities.Where(e => e.TimeZone = TimeZoneInfo.Local); – 2011-03-27 19:49:19

+1

不好。你不能從部分類中查詢屬性。您必須查詢該字符串屬性。 – 2011-03-27 19:53:45

+0

嗯,EF團隊似乎很喜歡它。我想我們可以希望在未來有一個解決方案。感謝您的迴應。 – 2011-03-27 19:58:43