将其他模型与Silverlight Business Application中的用户连接

本文关键字:用户 连接 Application Business 其他 模型 Silverlight | 更新日期: 2023-09-27 17:58:22

我在需要做的事情上遇到了真正的麻烦。事情是这样的:

我正在创建Silverlight业务应用程序。我希望用户能够定义自己的"提醒"answers"模板"。它看起来很简单,只有3个模型,2个一对多关系,仅此而已。但我不知道如何将现有的用户模型连接到其他模型。

我试着创建我自己的"成员资格"提供者-我已经用所有3个模型创建了数据库,看起来还可以,我创建了EntityModel,但现在我有两个不同的地方定义了User类,在第一个地方它继承了UserBase类,在另一个EntityObject(在文件Model.Designer.cs中,它是自动生成的。

我完全困惑了——我能坚持使用EntityObject解决方案,删除类的其他定义吗?如果是这样的话,我如何仍然能够使用silverlight业务应用程序附带的所有功能?(已提供身份验证/注册等)。

将其他模型与Silverlight Business Application中的用户连接

我们已经在LOB应用程序中实现了这个场景。

首先,像这样向用户类添加适当的属性

public partial class User : UserBase
{
    public Guid UserId { get; set; }
    public int PeopleId { get; set; }
    public int EpothecaryUserId { get; set; }
    public string PersonFullName { get; set; }
    public SearchGroups SearchGroups { get; set; }
    public string SearchHistoryString { get; set; }
    public int SearchRowsReturnedPerGroup { get; set; }
}

然后创建一个从AuthenticationBase 派生的类

public class AuthenticationService : AuthenticationBase<User>
{
    protected override User GetAuthenticatedUser(IPrincipal principal)
    {
        return base.GetAuthenticatedUser(principal).WithProfile();
    }
    [Invoke]
    public void SaveMyUser(User user)
    {
        if (user.UserId == Guid.Empty)
        {
            ClientLogger.Error("SaveMyUser failed because the UserId is invalid");
            return;                
        }
        using (var db = new Pharma360Model())
        {
            var userProfile = db.UserProfiles.Single(p => p.EpothecaryUserId == user.EpothecaryUserId);
            userProfile.SearchGroups = (int)user.SearchGroups;
            userProfile.SearchHistory = user.SearchHistoryString;
            userProfile.SearchRowsReturnedPerGroup = user.SearchRowsReturnedPerGroup;
            db.SaveChanges();
        }
    }

}

这将负责加载和保存自定义User类。