asp.net – 如何使用Membership API与自己的应用程序相关数据相
在asp.net 4中设计一个新的应用程序我必须决定如何在MS SQL数据库中使用MS SQL Membership API和我自己的数据.首先,我需要以更灵活的方式存储和访问用户配置文件数据,然后配置文件提供程序支持.其次,我想链接其他用户相关信息(例如订单).
无论您在何处存储aspnetdb表(在单独的数据库中或与数据存储在同一数据库中),问题仍然存在于如何保持数据同步. 经过研究,我看到以下相关选项: 一方面,我喜欢第一个解决方案,因为它非常简单,并在官方的asp.net教程中提出. 另一方面,反对者非常合理地指出,使用外键打破了提供者的一般想法,这些提供者应该帮助分离关注点并且可以互换.但不幸的是,他们并没有深入了解实施细节,因此从相关性和易于实施的角度来估计这些建议并不容易. 那么解决这个问题的最佳选择是什么?此外,实现将如何?仅仅使用额外的ADO.NET或LINQ等代码是否足够,还是值得实现自定义成员资格和/或配置文件提供程序? 先感谢您. 解决方法
第一种是最简单的方法.在相关表中添加用户的GUID作为外键(f.e.Ordered_by).我没有看到它打破分离问题的地方.如果您想将订单记录保存在数据库中,您还必须保留已订购的用户,这非常有意义.
我在当前的应用程序中成功使用了选项4.我创建了一个表aspnet_UserID,其中idUser int作为主键,fiUser(aspnet_Users的GUID)作为外键.这是模型: (注意:User是通过aspnet_regsql.exe创建的标准aspnet_Users表,aspnet_UserId是我的自定义表,它将每个Guid映射到我的int-ID) 现在我只在所有相关表中存储我的idUser作为FK(如在Order-Table中).这样做的好处是存储空间更小,UserID更易读(我永远不会记住GUID).也许它与这个“包装表”有点分离,但这不是我的主要意图. 如果要控制行为,可以更改外键上的delete-rule.如果你是f.e.将它设置为Cascade.想删除您要删除的用户订购的所有订单,或者如果要保留此订单,则将其设置为无操作. 我不能为配置文件问题提出任何替代方案,因为您没有提到“您需要以更灵活的方式存储和访问用户配置文件数据,而不是配置文件提供程序支持”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 如何在Razor中创建一个else if
- asp.net-mvc – 将Serverside MVC与Backbone.js结
- asp.net-mvc – 服务层验证
- asp.net-mvc – MVC – 如何在整个应用程序中实例
- asp.net-mvc – ASP.NET MVC获取具有特定配置文件
- model-view-controller – 有没有办法在ASP.MVC
- asp.net-mvc – ASP.NET MVC:Controller.Handle
- asp.net – 从内容页面设置服务器控件属性
- ASP.NET MVC 3 Razor:初始化一个JavaScript数组
- asp.net – Sitecore:Sitecore.Web.WebUtil.Red