标签: unit-of-work

使用DTO在服务层和UI层之间传输数据

我一直在试图解决这个问题,但是在ASP.NET MVC上这个特定主题的信息似乎很少.我一直在谷歌搜索几天,并没有真正能够解决这个特定的问题.

我有一个3层项目.业务,DAL和UI/Web层.在DAL中是dbcontext,存储库和工作单元.在业务层中是包含所有接口和EF模型的域层.在业务层中,还有一个服务层,其中包含用于EF模型的DTO和用于访问存储库的通用存储库服务.这张照片应该有助于解释它.

我的问题是,我似乎无法弄清楚如何使用DTO从业务层传输数据.

我已经为DTO创建了服务类.我有一个ImageDTO和模型和图像锚点相同.我为每个DTO创建了一个服务类.所以我有一个图像服务和主播服务.这些服务继承存储库服务,并且目前实现自己的服务.但就我而言,那就是那个.由于这些服务具有通过IoC接收IUnitOfWork接口的构造函数,因此我几乎陷入困境.

如果我直接从UI引用服务,一切正常,但我无法理解如何使用DTO将数据从服务层传输到UI层,反之亦然.

我的服务层:

业务/服务/ DTO的

public class AnchorDto
{
      public int Id { get; set; }
      public int x1 { get; set; }
      public int y1 { get; set; }
      public int x2 { get; set; }
      public int y2 { get; set; }
      public string description { get; set; }
      public int  imageId { get; set; }
      public int targetImageId { get; set; }

      public AnchorDto(int Id, int x1, int y1, int x2, …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc repository unit-of-work dto n-tier-architecture

14
推荐指数
1
解决办法
1万
查看次数

是否需要在数据库之外进行事务性行为?

没有交易,我不敢在数据库中做任何复杂的事情.几乎总是有一个简单易用的内置命令.但是当你开始使用其他持久性数据时,你就不会那么简单地使用事务支持.一些例子是

  • 文件系统
  • 网络服务(我没用过)

即使在非持久性数据中,在异常之后撤消工作块通常也很有用.您使用语言获得的标准数据结构都不支持事务.

我想知道的是,为什么数据库是特例?

是否有任何有用的链接指向数据库外的事务行为主题?

database persistence transactions unit-of-work

13
推荐指数
4
解决办法
1053
查看次数

通过消息代理进行Java/Python通信

通过支持(C)Python和Java/JMS应用程序的消息代理进行通信的好方法是什么?我的特殊要求是:

  • 开源解决方案
  • 可在基于Linux的系统上使用
  • 不需要发送方和接收方之间的会合(即使用消息代理)
  • 单个事件队列支持多个生产者和消费者(只有一个消费者接收每个消息)
  • 具有两阶段提交的工作单元支持(XA支持很好)
  • 支持持久性消息(即在重新启动代理后仍然存在)
  • 支持Java客户端的JMS
  • 没有任何组件是"边缘",意味着由于缺乏社区支持/兴趣而有可能失去维护
  • 如果有一个Python客户端设法"说JMS"会很棒,但是包含编写我自己的Python JMS层的任务的答案是可以接受的

我很难找到解决方案.Apache的ActiveMQ没有开箱即用的Python支持.ZeroMQ需要一个集合点.RabbitMQ似乎不支持JMS.我找到的最佳候选者是ActiveMQ和pyactivemq库的组合.但是pyactivemq的第一个也是最后一个版本是在2008年,所以看起来这不符合我的"无边缘"要求.

理想的答案是一个或多个支持良好且记录良好的开源软件包的名称,您个人习惯于在Java/JMS和Python应用程序之间进行通信,并且不需要进行大量的集成工作开始.答案包括"简单"(最多几天的工作)实施额外的胶水代码以满足上述所有要求,这是可以接受的.在没有良好的开源候选人的情况下,商业解决方案也是可以接受的.

此外,Jython已经出局了.(如果我能......)相同的Python应用程序将需要使用仅在CPython中可用的模块.

python java middleware unit-of-work messagebroker

13
推荐指数
2
解决办法
9316
查看次数

简单数据工作单元实施

我正在尝试在Simple.Data中找到工作单元模式的示例实现.有人有吗?我目前正在使用非通用存储库,并且被告知实现UoW是可以做的事情.

.net c# unit-of-work simple.data

13
推荐指数
1
解决办法
2164
查看次数

带有IoC容器的WPF中的UnitOfWork生命周期

我的基本设置很像这样; http://visualstudiomagazine.com/articles/2011/10/01/wpf-and-inversion-of-control.aspx

WPF中的MVVM设置.我正在将ViewOfWork和RepositoryFactory注入ViewModel.这对我到目前为止编写的对话框非常有用......但是我们的应用程序的大部分都在可停靠窗口内(想想Visual Studio UI).只要应用程序是这样,它们就是开放的.

所以我的想法是将单元工作从对话的生命周期转移到方法调用的生命周期(例如Button.Click()).

但我还没有想出一个好方法,这不会破坏我使用Castle Windsor作为IoC容器和/或不遵循DRY所带来的一些好处.

这似乎很不错...... http://www.codeproject.com/Articles/543810/Dependency-Injection-and-Unit-Of-Work-using-Castle但我担心会话被包裹在一个半单身和担心我可能会通过删除对UnitOfWork的直接访问来拍摄自己.

任何人都有一个很好的解决方案吗?以上代码项目是否良好,如果不是,它的缺陷是什么?

wpf castle-windsor ioc-container mvvm unit-of-work

13
推荐指数
1
解决办法
1951
查看次数

我应该使用带有Entity Framework 5的通用存储库吗?

我目前正在使用具有通用存储库和工作单元模式的实体框架.我的模型类似于本文中描述的模型

我过去曾使用Generic Repositories,并且非常享受它可以提供的全局功能.但是,在将它与Entity Framework一起使用时,似乎每天都会遇到更多问题.在处理父/子/交汇关系时,这些问题似乎更多.

使用带有EF的通用存储库开始在我的口中留下不好的味道,我开始认为使用带有EF的通用存储库是错误的方法.

有人可以帮助引导我朝正确的方向发展吗?

c# generics entity-framework unit-of-work

13
推荐指数
1
解决办法
8011
查看次数

工作单元+存储库+具有依赖注入的服务层

我正在设计一个Web应用程序和一个Windows服务,并希望将工作单元+存储库层与服务层结合使用,我在将它们放在一起时遇到一些麻烦,以便客户端应用程序控制数据的事务处理.工作单位.

工作单元具有在事务中注册的所有存储库的集合以及提交和回滚操作

public interface IUnitOfWork : IDisposable
{
    IRepository<T> Repository<T>() where T : class;
    void Commit();
    void Rollback();
}
Run Code Online (Sandbox Code Playgroud)

通用存储库具有将在特定模型(表)的数据层上执行的操作

public interface IRepository<T> where T : class 
{
    IEnumerable<T> Get(Expression<Func<T, bool>> filter = null, IList<Expression<Func<T, object>>> includedProperties = null, IList<ISortCriteria<T>> sortCriterias = null);
    PaginatedList<T> GetPaged(Expression<Func<T, bool>> filter = null, IList<Expression<Func<T, object>>> includedProperties = null, PagingOptions<T> pagingOptions = null);
    T Find(Expression<Func<T, bool>> filter, IList<Expression<Func<T, object>>> includedProperties = null);
    void Add(T t);
    void Remove(T t);
    void Remove(Expression<Func<T, bool>> filter);
}
Run Code Online (Sandbox Code Playgroud)

工作单元的具体实现使用引擎下的实体框架(DbContext)来保存对数据库的更改,并且每单元工作创建一个新的DbContext类实例

public …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc design-patterns dependency-injection unit-of-work repository-pattern

13
推荐指数
2
解决办法
2万
查看次数

利用控制器和视图中的继承

我刚才在codereview.stackexchange.com上发布了这篇评论 ...我觉得它可能更适合stackoverflow,因为它更像是一个问题,而不是代码审查.

它需要一些解释,请耐心等待.


我正在ASP.NET MVC中开发一个电子商务网站.用户可以在网站上发布不同类型的广告.

我使用继承来定义我的广告类型,这个问题是利用层次结构来删除控制器和视图中重复的代码.

我有不同的广告类型:SimpleAd,CarRealEstateRental.

每个广告都源自AdBase,其具有所有常见属性:

public abstract class AdBase
{
    public long AdBaseId { get; set; }
    public bool IsActive { get; set; }
    public long UserId { get; set; }
    public string Title { get; set; }
    public short AdDurationInDays { get; set; }
    public string PhotosFolder { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,其他广告来自此基类:

public class SimpleAd : AdBase
{
    public decimal Price { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

oop asp.net-mvc inheritance repository unit-of-work

13
推荐指数
1
解决办法
400
查看次数

工作单元和存储库模式

我使用NHibernate设置了存储库模式.基类如下所示:

public interface IUnitOfWork : IDisposable
{
    void Commit();
    void Rollback();
}

// generic NHibernate implementation of IUnitOfWork here

public class NHibernateRepositoryBase<T> : IRepository<T>
{
    private NHibernateUnitOfWork _unitOfWork;

    public NHibernateRepositoryBase(NHibernateUnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork;
    }
    public T Get(object id)
    {
        return _unitOfWork.Session.Get<T>(id);
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我允许通过构造函数(使用StructureMap)填充工作单元.我正在填充ASP.NET Web服务上的存储库对象,如下所示:

[WebService(Namespace = "...")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ModuleService : System.Web.Services.WebService
{
    public IUserAccountRepository UserAccountRepo { get; set; }

    public ModuleService()
    {
        // tell IoC to inject properties
        ObjectFactory.BuildUp(this);
    }

    // …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns unit-of-work repository-pattern

12
推荐指数
1
解决办法
5126
查看次数

如何在Entity Framework中使用存储过程+存储库+工作模式单元?

我首先使用Entity Framework代码创建MVC Web应用程序项目.在这个项目中,我将使用通用存储库和工作单元模式.另外,我想使用存储过程来获取list by和get-list方法.

如何将存储过程与通用存储库和工作单元模式一起使用?

entity-framework unit-of-work repository-pattern entity-framework-4 ef-code-first

12
推荐指数
2
解决办法
2万
查看次数