Entity Framework Code First CTP5: Как определить не примитивные типы - PullRequest
3 голосов
/ 10 февраля 2011

Сначала я тестирую CTP5 для кода создания сущностей, и я столкнулся с этой проблемой. У меня есть класс со свойством типа Uri (System.Uri), но похоже, что он не может автоматическиопределить, как сохранить это, поэтому я получаю сообщение об ошибке типа

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

Как я могу сказать модели для сопоставления Uri с varchar, например, с URL-адресом URI ??

1 Ответ

1 голос
/ 10 февраля 2011

Фактическая модель POCO должна связываться с примитивными типами. Вы можете использовать привязку сложного типа, такую ​​как:

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

А в вашем действительном объекте указывайте этот сложный тип как ссылку на Uri, если вам это абсолютно необходимо. Ваше сопоставление будет затем ссылаться на свойство для фактического значения в виде строки. Последний вариант - создать пользовательское отображение из URI в строку и наоборот для использования механизмом EF. Однако я бы не советовал этого. Фактическое свойство базы данных имеет тип varchar или nvarchar, а не URI. Таким образом, EF не знает, что такое URI.

...