我有一些基于缺乏最佳实践的设计问题。我有一个给定的模型,其中包含一些我无法更改的用户信息,因为我通过OData-Service-Call进行只读访问。例如:
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set: }
}
现在,我有兴趣添加一些与用户相关的信息,并使用EntityFramework将此信息保存在本地数据库中。最终目标是获得如下的扩展模型:
public class ExtendedUser
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set: }
public char FavoriteChar { get; set; } // <-- additional Information
}
由于有许多用户可用且只有极少数用户拥有此附加信息(FavoriteChar
),因此创建另一个模型以仅保存附加信息可能是个好主意。特别是某些值(例如电子邮件)可能会发生变化,我不想一直同步这些值。所以我想到了这样一个模型:
public class FavoriteCharAssignment
{
public int UserId { get; set; }
public char FavoriteChar { get; set; }
}
现在是棘手的部分:我如何合并这两个模型(User
和FavoriteCharAssignment
)才能获得ExtendedUser[]
?
Users[] users = odata.Users.ToArray();
using(db = new Context())
{
FavoriteCharAssignment[] assignments = db.FavoriteCharAssignments.ToArray();
/*
* Here I need some magic to merge those two arrays to an ExtendedUser[]
*/
}
在SQL-words中:我需要在OData-Serice和EntityFramwork之间进行一种交叉连接。 :)