- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的第一个真正的(不是测试的)NHibernate/CaSTLe.ActiveRecord 项目正在快速开发。我现在正在使用 NHibernate/CaSTLe.ActiveRecord 大约一个月,但仍然不知道如何在我的 WindowsForms 应用程序中处理 session 。
常见的处理方法对我来说不起作用:
我已经使用谷歌和必应几个小时并阅读了很多内容,但只找到了一个关于我的案例的好网站:http://msdn.microsoft.com/en-us/magazine/ee819139.aspx 。这里使用了 SessionPerPresenter,但对于“子演示者”来说,它只给出了 id,而不是整个对象!看起来这个例子中没有外来键,也没有将对象返回到“ super 呈现者”的场景。
问题
示例
我试图举一个例子来涵盖我的大部分问题。
// The persisten classes
public class Box
{
public virtual int BoxId{get;set;}
public virtual Product Content{get;set;}
...
}
public class User
{
public virtual int UserId{get;set;}
public virtual IList<Product> AssigenedProducts{get;set;}
...
}
public clas Product
{
public virtual int ProductId{get;set;}
public virtual string PrductCode{get;set;}
}
.
// The presenter-classes
public class ProductSearchPresenter : SearchPresenter<Product> { ... }
public class ProductEditPresenter : EditPresenter<Product> { ... }
public class UserSearchPresenter : SearchPresenter<User> { ... }
public class UserEditPresenter : EditPresenter<User> { ... }
public class BoxSearchPresenter : SearchPresenter<Box> { ... }
public class BoxEditPresenter : EditPresenter<Box> { ... }
// The search-presenters allow the user to perform as search with criterias on the class defined as generic argument and to select one of the results
// The edit-presenters allow to edit a new or loaded (and given as parameter) object of the class defined as generic argument
现在我有以下用例,所有用例都可以在同一个应用程序中同时异步执行(使用只需在演示者之间切换)。
这只是一小部分用例,但我已经遇到了很多问题。
最佳答案
这只是我发现最适合我们的 WinForms 应用程序架构(基于 MVP)的简短 View 。
每个演示者都是依赖于它需要的存储库的构造函数,例如,如果您有 InvoicePresenter,那么您有 InvoiceRepository 作为依赖项,但您可能会有 CustomerRepository 和许多其他依赖项,具体取决于复杂性(CustomerRepsitory 用于将所有客户加载到客户组合框中,如果您想更改发票的客户,诸如此类)。
然后,每个存储库都有一个 UnitOfWork 的构造函数参数。您可以使用 UnitOfWork 模式抽象 session ,也可以让您的存储库依赖于 ISession。
一切都通过 IoC 容器连接在一起,我们在其中根据“上下文”创建演示者。这是一个非常简单的概念,上下文是每个演示者和所有子演示者,我们又将其创建为更复杂的演示者的复合 block 以降低复杂性(例如,如果您有多个选项卡来编辑某些实体或其他内容)。
因此,在实践中,此上下文 90% 的时间是基于表单的,因为一个表单至少是一个演示者/ View 。
回答你的问题:
每个演示者的 session 和每个对话的 session (也适用于 WinForms)在这里只是真正可用的模式(并且在各处打开结束 session ,但不是处理该问题的好方法)-
最好的解决方法是使存储库依赖于 session ,而不是演示者。您使演示者依赖于存储库,存储库依赖于 session ,当您创建所有存储库时,您为它们提供公共(public) session ;但正如我再次指出的,这只有在上下文中完成时才实用。您不能共享演示者编辑发票的 session 和另一演示者编辑客户的 session ;但您可以在通过主演示者和发票详细信息以及发票注释子演示者编辑发票时共享 session 。
请澄清一下,不明白这个...
关于winforms - NHibernate/CaSTLe.ActiveRecord ; session 管理;窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8739457/
对于一个科学实验,我写了一个turtle.py ,它会打开一个 800x480 的窗口并绘制一个缓慢增长的黑点。 turtle.py以 C:\Users\kaza>python C:\Users\ka
我开发了一个 swing 应用程序,但每次运行应用程序时都会打开一个新窗口。我希望如果一个窗口已经打开,则其他窗口不允许打开。 最佳答案 Here是一个 Java 单一应用实例的例子: A singl
有没有办法检测主进程中 Electron 的结构? process.platform 似乎也在 x64 机器上返回 win32,我没有在文档中找到任何获取架构的选项。 最佳答案 你试过 process
public short[] HanningWindow(short[] signal_in ,int pos ,int size) { for (int i= pos; i < pos+si
我有一个具有这些属性的 Electron 窗口: mainWindow = new BrowserWindow({ width: 800, height: 600, title: "Aqu
我有一个 Ubuntu 工作站,我正在尝试引导一个 Windows 节点。 Windows 节点在端口 2222 上打开了 ssh。我一直在关注 http://docs.opscode.com/plu
我是一名优秀的程序员,十分优秀!