实体框架代码第一CTP5:如何定义非基本类型

时间:2011-02-09 22:57:45

标签: c# entity-framework entity-framework-ctp5

我首先测试CTP5的实体框架代码,我遇到了这个问题 我有一个类具有Uri(System.Uri)类型的属性,但看起来它无法自动识别如何存储它,所以我得到一个错误,如

Problem in mapping fragments starting at line 23:No mapping specified for properties WebPage.Uri in Set WebPage

我如何告诉模型将Uri映射到varchar,例如,使用uri的url ??

1 个答案:

答案 0 :(得分:1)

实际的POCO模型必须绑定到基本类型。您可以使用复杂类型绑定,例如:

[ComplexType()]
public class UriHelper
{
    public string StringRepresentation {get;set;}
    public Uri ActualUri()
    {
        return new Uri(StringRepresentation);
    }
}

如果你绝对需要,在你的实际对象中引用这个复杂类型作为Uri引用。然后,您的映射将引用属性作为String的实际值。最后一个选项是创建从URI到字符串的自定义映射,反之亦然,以供EF引擎使用。但是,我不建议这样做。实际的数据库属性是varchar或nvarchar类型,而不是URI。因此EF不知道URI是什么。