我想知道在可维护性方面使用asp.net DataBinding的最佳实践是什么.
当我必须对数据库进行更改时,我不希望应用程序崩溃.
我应该完全在代码隐藏中进行数据绑定吗?我打算使用ObjectDataSources进行数据绑定.是否存在比使用数据绑定更容易维护的东西,如果是这样,它是什么?
是否有考虑因素,在设计数据访问层和业务层时应考虑到这些因素?
谢谢.
我越来越厌倦了关于控制ID的所有怪癖,试图在服务器端获取数据(基于客户端事件).我似乎花了更多时间与asp.net中的控件进行斗争,我认为这比我使用它获得的时间更多.
我正在考虑使用简单的html/javascript和jQuery以及为数据返回json的Web服务.
我认为我唯一想念webforms的是MasterPages,会话管理,基于Windows登录的身份验证和可能的验证器(虽然它们也有一些怪癖).(事实上,也许不是会话和auth,但我从来没有开发过webservices)
请注意,我只有Framework 2.0可用于开发.
编辑:在asp.net中让我烦恼的事情让我对这个开关感到奇怪:
这是一个给我提问的页面示例.
有一张树桌(主/细节)
您可以编辑每个子行的字段.
当您按下保存按钮时,必须更新来自组行的数据(仅来自选择的数据,而不是数据库中的修改)作为子行中的数据.
我不想刷新整个页面,因为显示的记录来自搜索标准.
使用中继器生成主/详细信息
尝试从后面的代码更新记录非常古怪,并且仍然没有关于更新显示的线索.
使用jQuery和Web服务,我的猜测是我可以直接更新到数据库,请求我想要显示的内容并只更新该记录.这种事情让我想知道asp.net是否只是阻碍了我.
________________________________________________________________________ | - Some Details About Group | |________________________________________________________________________| |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| | ChildRecord Some Editable Fields SaveButton | | ChildRecord Some Editable Fields SaveButton | | ChildRecord Some Editable Fields SaveButton | | ChildRecord Some Editable Fields SaveButton | |_______________________________________________________| ________________________________________________________________________ | + Some Details About Group | |________________________________________________________________________| ________________________________________________________________________ | + Some Details About Group | |________________________________________________________________________|
Edit2: 我对ASP.NET的问题与ajax无关.是的,我使用jQuery使界面更加动态,就像在不需要时显示/隐藏搜索部分一样,并从树中折叠细节,但这就是我用它做的全部.
困扰我的是,如果我想检查在这个例子中点击了哪个按钮,我必须使用一些感觉有点蠢的技巧.
如果要在转发器中使用数据绑定组合框,则必须使用代码隐藏来设置所选值,从而无法检索所选数据.
接下来,如果要检查修改了哪些数据,则必须将数据表保存在视图状态中,从转发器中的所有控件读取数据,然后与数据表进行比较以进行更新.这就是用asp.net打扰我的事情.
我想知道,在asp.net中管理数据库连接的最佳方法是什么.
我的应用程序是使用N层架构构建的.DAL由静态类和方法组成
Public Shared Sub Delete( _
ByVal connection As MyConnectionClass, _
ByVal contact_id As Integer, _
ByVal contact_timestamp As Date _
)
With connection.ProcParams
.Add(New StoredProcParam("p_contact_id", contact_id, OracleDbType.Int32))
.Add(New StoredProcParam("p_contact_timestamp", contact_timestamp, OracleDbType.Date))
End With
connection.Execute("PKG_DATA_ACCESS.DeleteContact")
End Sub
Run Code Online (Sandbox Code Playgroud)
这里需要注意的是,我将连接从BLL传递给DAL.
以下是我考虑过的观点,但对我来说似乎都没有,所以我只是在征求意见.
我应该在MasterPage中创建连接,将其存储在一个对象中,然后在创建它时将它传递给我的业务对象(我试图避免的事情)
我应该使用静态类创建连接并在其上调用CreateConnection等方法,从我的业务对象的构造函数(我想要的东西,但我不希望每个对象有一个连接,我喜欢它要为我的对象的所有实例共享,但由于asp.net是多线程的,静态类对存储连接没有意义)
理想情况下,该解决方案也应该在Windows窗体环境中运行良好(因此,没有连接存储在会话中,并在类中使用静态方法检索它,对于当前上下文)
我无法使用ninject定义绑定.
我在标准的ASP.NET WebForms应用程序中.我已经为页面和控件中的Inject依赖项定义了一个http处理程序(Property injection).
这是我想要做的:
我正在创建一个自定义组合框usercontrol.根据组合框中枚举的值,我希望能够在属性中注入一个不同的对象(我想要做的是比这更多的参与,但对此的回答应该足以让我走).
基于域驱动设计的以下定义:处理软件核心的复杂性,
聚合是:关联对象的群集,出于数据更改的目的,这些对象被视为一个单元。外部引用仅限于AGGREGATE的一个成员,称为根。一组一致性规则适用于AGGREGATE的边界。
我认为Aggregate根目录不应包含对存储库的引用。由于聚合根是唯一应保留对其实体和聚合的引用的根,因此它们应该是私有的。
我的存储库如何保留并恢复此私有数据?
编辑:
让我们以经典的Order,OrderLines为例。
订单是聚合根。
它的行是实体。
由于聚合根(订单)是唯一允许保存对其实体(订单行)的引用的对象,因此我不知道如何持久存储库中的订单行。
persistence domain-driven-design aggregate ddd-repositories aggregateroot
我想知道如何检查引用游标是否返回数据.
假设我在PL/SQL包中有以下代码:
type refcursor is ref cursor;
procedure Foo(cursorresult out refcursor) is
begin
open cursorresult for
select *
from table t
inner join t2 on t.id = t2.id
where t.column1 is null;
end;
procedure DoSomeghingIfFooHasResults is
curFoo refcursor;
begin
Foo(curSansOwner);
if curFoo%found then
-- Do something
end if;
end function;
Run Code Online (Sandbox Code Playgroud)
此代码用于更复杂的过程,Foo中的查询使用多个表.
我需要在asp.net应用程序中从Foo返回的数据,但是当Foo找到一些数据时我也需要做一些事情.
我想在几个地方重用查询,但我认为这不适合视图.
什么是最好的方式来知道Foo是否找到了什么?
谢谢.
我正在开发一个有订阅的应用程序.我想知道什么是构造数据的最佳方式,如下面的模式(使用表或css).(对不起,我在工作,感冒不在免费图片托管服务上发布我想要的图片.)
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| | Location: xxxxxxxxx-xxxx-xxx Maximum subscription date: 12-11-2009 | | Begin date: 12-15-2009 Cost: $ 150 | | Duration: 2 Days | | Status: Confirmed with remaining places [Subscription] | | | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| | Location: xxxxxxxxx-xxxx-xxx Maximum subscription date: 12-12-2009 | | Begin date: 12-15-2009 Cost: $ 150 | | Duration: 2 Days | | Status: Confirmed with remaining places [Subscription] | | | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
我在想桌子,但我不确定这是最合适的方式.
asp.net ×4
.net ×3
aggregate ×1
architecture ×1
css ×1
cursor ×1
data-binding ×1
html ×1
jquery ×1
layout ×1
maintenance ×1
ninject-2 ×1
oop ×1
oracle ×1
persistence ×1
plsql ×1
ref-cursor ×1
vb.net ×1
web-services ×1