后台,我正在使用自定义类和额外表扩展ASP.NET成员资格。
ASP.NET MembershipUser具有受保护的构造函数和用于从数据库读取数据的公共方法。我已经使用自定义表和关联类扩展了数据库结构。
不像在原始API中那样使用静态方法来创建新成员:我允许代码实例化一个简单的对象并填充数据,因为有几个实体。
原 模式#1受保护的构造函数
> static CreateUser(string mydata, string, mydata, ...)
> User.Data = mydata;
> User.Update()
我的首选 模式#2公共构造函数
> newUser = new MembershipUser();
> newUser.data = ...
> newUser.ComplextObject.Data = ...
> newUser.Insert()
> newUser.Load(string key)
我发现模式#2更容易使用更自然。但方法#1更具原子性并确保包含适当的数据。
我想听听有关利弊的任何意见。我的问题是我更喜欢一个简单的CRUD /对象,但我也试图利用底层API。这些方法完全不匹配。例如,API具有方法,如UnlockUser()和IsLockedOut的只读属性。
我可以看到有一些可能性。
选项#1 让对象保存/加载自身但需要私有构造函数。
选项#2 让对象保存/加载自己,但让它有一个公共构造函数
选项#3 一种是创建POCO /简单CRUD对象,然后使用静态方法更新数据库。 ..............
选项#1 优点:多线程安全“原子”,对象完整性 损害:难以使用 - >传递大量数据,可能需要在创建之后进行更新,这在某些情况下需要包装在事务中,因此看起来很混乱
选项#2 优点:易于使用,易于组织交易 缺点:对象可能会也可能没有正确设置
答案 0 :(得分:1)
我更喜欢你的选择#2。我非常喜欢使用默认构造函数的对象。你说你喜欢#1,因为它迫使你把数据放入,但实际上,你应该对此进行验证,对吧?所以如果你有验证,为什么不依靠那些?如果你没有它们,那就把它们放进去吧! (不可否认,我更喜欢默认构造函数的一个主要原因是序列化,并且它更容易测试。)
价值0.02美元。