Entity Framework Code Первые столбцы литья - PullRequest
1 голос
/ 02 августа 2011

У меня есть класс

public class Foo
{
    public int UserId { get; set; }
}

, и я использую код беглого первого кода, чтобы сопоставить его с базой данных.

Property(i => i.UserId)
            .HasColumnName("userno");

единственная проблема в том, что userno на самом делесимвол (10) в базе данных.Как мне использовать приведение или преобразование этого типа?поскольку я в настоящее время получаю эту ошибку.

Свойство 'UserId' в 'Foo' не может быть установлено в значение 'String'.Необходимо установить для этого свойства ненулевое значение типа Int32.

Спасибо

1 Ответ

3 голосов
/ 02 августа 2011

Платформа сущностей не поддерживает преобразование типов в отображении, поэтому единственное допустимое сопоставленное свойство в вашем сценарии:

public class Foo
{
    public string UserId { get; set; }
}

Если вы также хотите int свойство, вы должны сделать:

public class Foo
{
    public string UserId { get; set; }

    public int UserIntId 
    {
       get { return Int32.Parse(UserId); }
       set { UserId = value.ToString(); }
    }
}

И добавьте это к вашему отображению:

Ignore(i => i.UserIntId);

Вы можете поиграть с доступностью свойства UserId, но имейте в виду, что доступность также влияет, если ваше отображение действительно видит свойство. Если этого не произойдет, у вас не будет сопоставлено UserId.

...