2011-03-27 63 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