我真的遇到了我需要做的事情。 事情就是这样:
我正在创建Silverlight业务应用程序。我希望用户能够定义自己的“提醒”和“模板”。看起来很简单,只有3个模型,2个一对多的关系,这就是全部。但我不知道如何将现有的用户模型连接到其他模型。
我尝试创建自己的“成员资格”提供程序 - 我已经使用所有3个模型创建了数据库,它似乎没问题,我创建了EntityModel,但现在我有两个不同的地方,其中定义了User类,并且第一个是继承UserBase类,另一个是EntityObject(在文件Model.Designer.cs中,它是自动生成的。
我完全糊涂了 - 我可以坚持使用EntityObject解决方案,删除其他类的定义吗?如果是这样,我怎样才能使用silverlight业务应用程序附带的所有功能? (已提供认证/注册等)。
答案 0 :(得分:0)
我们已在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类。