Отображение отношений FK в EF codefirst - PullRequest
0 голосов
/ 25 октября 2011

Допустим, у меня есть 2 таблицы, такие как:

Table:User
-------------
- UserId [pk]
- UserName
- StatusId [fk]

Table: Status
-------------
- StatusId [pk]
- StatusDescription

Теперь, допустим, я хочу показать StatusDescription в моем документе как:

public class User
{
int UserId{get;set;}
string UserName{get;set;}
int StatusId{get;set;}
string StatusDescription{get;set;}
}

Можно ли отобразить это в EF? Или я могу достичь этого только с:

public class User
{
int UserId{get;set;}
string UserName{get;set;}
Status UserStatus{get;set;}
}

Есть идеи? Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Без использования представления базы данных вы можете получить только второе решение, но вы можете улучшить его с помощью не сопоставленного свойства StatusDescription:

public class User
{
    public int UserId { get;set; }
    public string UserName { get;set; }
    public Status UserStatus { get; set; }

    [NotMapped]
    public string StatusDescription 
    {
        get
        {
            return UserStatus.StatusDescription;
        }

        set
        {
            UserStatus.StatusDescription = value;
        }
    }
}
0 голосов
/ 25 октября 2011

Вы можете создать метод расширения для создания объекта POCO с любыми сложными свойствами.

  public static class UserExtensions
    {
        public static UserPoco ToPoco(this User user)
        {
            UserPoco poco = new UserPoco();
            poco.UserId = user.UserID;
            poco.UserName = user.UserName;
            poco StatusDescription = user.Status.StatusDescription;
            return poco;
        }
        public static UserPoco ToPoco(this User user,ExtraObjectToInclude object)
        {

            //....you can include other objects to construct something complex.
        }
    }

Вам необходимо добавить навигационную ссылку на объект Status внутри объекта User.Ваши объекты Poco не обязательно должны точно соответствовать одному объекту.Они также могут содержать дополнительную информацию от нескольких организаций.

...