使用自定义信息扩展只读C#模型

时间:2015-07-28 10:02:24

标签: c# entity-framework web-services modeling

我有一些基于缺乏最佳实践的设计问题。我有一个给定的模型,其中包含一些我无法更改的用户信息,因为我通过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; }
}

现在是棘手的部分:我如何合并这两个模型(UserFavoriteCharAssignment)才能获得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之间进行一种交叉连接。 :)

0 个答案:

没有答案