将其他模型与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业务应用程序附带的所有功能?(已提供身份验证/注册等)。
我们已经在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类。