一千萬個為什麽

搜索

在Silverlight業務應用程序中將其他模型與用戶連接


我真的遇到了我需要做的事情。 這是事情:

我正在創建Silverlight業務應用程序。我希望用戶能夠定義自己的“提醒”和“模板”。看起來很簡單,只有3個模型,2個一對多的關系,就是這樣。但我不知道如何將現有的用戶模型連接到其他模型。

我試圖創建自己的“成員資格”提供者 - 我已經創建了所有3個模型的數據庫,它似乎沒問題,我創建了EntityModel,但現在我有2個不同的地方定義了User類,而在第一個它繼承UserBase類和另一個EntityObject(在自動生成的Model.Designer.cs文件中)。

我完全糊塗了 - 我可以堅持使用EntityObject解決方案,刪除其他類的定義嗎?如果是這樣,我怎樣才能使用silverlight業務應用程序附帶的所有功能? (已提供認證/註冊等)。

最佳答案

我們已在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
{

    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類。

轉載註明原文: 在Silverlight業務應用程序中將其他模型與用戶連接

猜你喜歡