2011-10-25 102 views
0

比方說,我有2個表所示:在EF映射FK關係codefirst

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

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

現在比方說,我要顯示的狀態說明我的POCO這樣的:

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;} 
} 

任何想法?提前致謝。

回答

1

不使用數據庫查看您只能達到第二個解決方案,但你可以用非改善它映射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

感謝您的回答,悲傷沒有辦法在EF中直接映射... – AlegSilva

0

您可以創建一個擴展方法來生成任何複雜的特性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. 
     } 
    } 

您需要在用戶實體內添加一個導航鏈接到狀態實體​​。您的Poco對象不需要完全匹配一個實體。他們還可以包含來自多個實體的更多信息。

+0

感謝您的答案,這是我正在考慮,但使用像AutoMapper的東西... – AlegSilva