假设我有2个表,如:
Table:User
-------------
- UserId [pk]
- UserName
- StatusId [fk]
Table: Status
-------------
- StatusId [pk]
- StatusDescription
现在让我们说我想在我的poco中显示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;}
}
有什么想法吗?提前谢谢。
答案 0 :(得分: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;
}
}
}
答案 1 :(得分: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.
}
}
您需要向User实体内的Status实体添加导航链接。您的Poco对象不需要与一个实体完全匹配。它们还可以包含来自多个实体的更多信息。