小编The*_*Mar的帖子

从列表1中删除不在列表2中的项目

我正在学习编写lambda表达式,我需要有关如何从列表中删除不在另一个列表中的所有元素的帮助.

var list = new List<int> {1, 2, 2, 4, 5};
var list2 = new List<int> { 4, 5 };

// Remove all list items not in List2
// new List Should contain {4,5}    
// The lambda expression is the Predicate.
list.RemoveAll(item => item. /*solution expression here*/ );

// Display results.
foreach (int i in list)
{
    Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)

c# lambda

30
推荐指数
4
解决办法
4万
查看次数

如何将当前用户信息传递给DDD中的所有图层

以前曾问过类似的问题,但不完全相同(除非我错过了)

我想通过我的服务,域,域事件,域事件处理程序传递IUserInfo类实例...

什么是最好的方法.

我是不是该

  • 使用IoC通过将其注册到Httpcontext.Current.session ["CurrentUser"]的实例来注入它;

  • 将数据添加到当前线程.

  • 任何其他方式

我被困在域事件处理程序中,我想使用这些数据进行审计以及发送电子邮件.

我希望能够在我的应用程序中的任何位置使用CurrentUser信息.

随着线程被合并的线程,我怀疑线程的重用是否会重置数据.如果没有,请告诉我如何使用线程传递IUser实例.

问候,

损伤

.net c# domain-driven-design n-tier-architecture

22
推荐指数
2
解决办法
4850
查看次数

CQRS和域事件

CQRS让我进入思维模式.我正在尝试用CQRS创意开始一个新项目.我喜欢的主要内容是
1)Query和Command的分离.我们的域查询一直是个问题.
2)使用事件存储进行审计 - 我不会将其用于重播 - 至少现在不是.

我很擅长查询方面,我仍然对域事件有一些疑问

如果一个命令导致多个聚合根(例如订单和订单详细信息)的更新,我将把它们限定在UnitofWork(事务性)下.现在,每个域负责在更改发生到其状态时发布事件.

让我们说该命令更改3 orderDetail记录.每个OrderDetail将发布2个事件.最后我们有6个活动.

a)如果我在对域对象进行更改(但未提交事务)后立即发布事件,如何撤消已发布的事件(并且可能已被订阅者使用)

  • 我能想到的是将事件保存在"同一工作单元范围内"的列表中,并且一旦调用了事务提交,就将其存储并发布.这听起来像是人们会做的事吗.

b)如果OrderDetail中的更改要求在Order Aggregate Root中进行某些更改,那么
i)我应该通过处理OrderDetail Aggregate发布的事件来进行这些更改吗?对于前者 让我们说两个订单明细被删除.这使订单状态从"首选"变为"不首选".ii)如果事件错误并且没有更新订单状态怎么办 - 如果订单仍然是首选,那么它将在2天内发货.

添加另一个问题
c)"域事件是所有应用程序状态更改的来源"还是"所有应用程序状态更改的结果"

先感谢您,

三月

cqrs domain-events

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

新手 - 是否需要消费者队列才能使发布在MassTransit中工作

我试图绕过MassTransit和RabbitMQ并排队(第1天)

我的问题是"消费者是否有必要排队在MT工作.我问的原因是因为我首先创建了Domain和Producer,但我没有在RabbitMQ管理窗口中看到任何排队的项目."

创建消费者队列后,我可以看到消息排队.

根据我的理解,Producer永远不会意识到消费者,那么为什么MassTransit需要消费者队列来启动消息发布?

制片人

using MassTransit;

namespace Producer
{
    class Program
    {
        static void Main(string[] args)
        {
            Bus.Initialize(sbc =>
            {
                sbc.UseRabbitMq();         //1
                sbc.UseControlBus();
                sbc.EnableMessageTracing();
                sbc.EnableRemoteIntrospection();
                sbc.ReceiveFrom("rabbitmq://localhost/MT.Producer");
                sbc.UseControlBus();
            });

            Bus.Instance.Publish(new NewOrderMessage { OrderName = "Hello World" });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MassTransit;
using Topshelf;

namespace Consumer
{
    class Program
    {
        static void Main(string[] args)
        {
            Bus.Initialize(sbc =>
            {
                sbc.UseRabbitMq();
                sbc.UseRabbitMqRouting();
                sbc.ReceiveFrom("rabbitmq://localhost/MT.ConsumerService");
            });

            var cfg = HostFactory.New(c =>
            {
                c.SetServiceName("MT.ConsumerService"); …
Run Code Online (Sandbox Code Playgroud)

masstransit

9
推荐指数
1
解决办法
1161
查看次数

ASP.Net MVC使用新的Model of Instance返回View,而不是使用Redirect To Action

我有一个使用ViewModel的表单视图.Action"New"呈现新视图.提交此表单后,我将信息发送回"添加"操作.

如果DB上的所有操作都成功,我想刷新视图.我从"添加"操作中创建了一个新的viewmodel实例,并返回View("New",viewModel).这不会刷新我的观点.所有旧值(已提交)仍保留在视图中.有没有办法刷新页面没有RedirectToAction方法.

我在另一篇文章中读到不应该使用ModelState.Clear,因为它可能会产生不良结果.

谢谢,

损伤

编辑1 - 添加代码

New

 public ActionResult New(string id)
        {
            var sysId= new Guid(id);
.......
........

  string Details = pDto.Name + "(" + pDto.Code + ")";

            var vm= new ViewModel(id);
            vm.Details = Details;

            return View(vm);
        }



 public ActionResult Add(ViewModel vm)
        {
                        ViewModel vm= vm;

            if (ModelState.IsValid)
            {

                              var dto= _qRepository.GetFeaturesBy(viewModel.Code);

                if (dto!= null)
                {

                    ModelState.AddModelError("Code", "Code is already in Use.");

                    return View("New", viewModel);
                }

                _productService.AddFeature(..........);
               // ModelState.Clear();  -- this works          
                vm= new ViewModel(vm.pId) { Message = …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc view

6
推荐指数
2
解决办法
6974
查看次数

structuremap ObjectFactory.GetAllInstances <IHandle <TEvent >>()

我正忙着在最近的一个项目中实现事件.

我已经验证了structuremap正在扫描正确的汇编和添加EventHandler

Scan(cfg =>
            {
               cfg.TheCallingAssembly();
                cfg.IncludeNamespace("ABC.EventHandler");
                cfg.ConnectImplementationsToTypesClosing(typeof(IHandle<>));

           });

 public class StructureMapEventDispatcher : IEventDispatcher
    {

        public void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent
        {

            foreach (var handler in ObjectFactory.GetAllInstances<IHandle<TEvent>>())
            {

                handler.Handle(eventToDispatch);

            }

        }

    }
Run Code Online (Sandbox Code Playgroud)

之前我曾经从域中触发事件.有点像Dispatcher.RaiseEvent(new [domainEvent class](x,y,z));

而事件将被激起.我不得不改变设计,我现在收集集合中的collectiong事件

_domainEvents = new Collection<IDomainEvent>();
Run Code Online (Sandbox Code Playgroud)

我将域保存到存储库后再将其提升

 public static void Raise(ICollection<IDomainEvent> domainEvents)
        {
            foreach (var domainEvent in domainEvents)
            {
                DomainEventDispatcher.Raise(domainEvent);
            }

        }
Run Code Online (Sandbox Code Playgroud)

但现在

ObjectFactory.GetAllInstances<IHandle<TEvent>>() 返回0个处理程序计数

如果我注意的话

ObjectFactory.GetAllInstances<IHandle<DomainEventClass>>() 它正确返回处理程序集合(目前我有2个,它显示2个计数)

...我假设这与事件被提出类型IDomainEvent 而不是实际类型有关,这使得结构图很难解决它.

我该如何解决这个问题?

问候,

三月

-

编辑1:

我已经确定struturemap容器包含从程序集扫描的所有事件处理程序.

编辑2

我不知道如何让这个问题引起更多关注.我正在为获得所需结果的解决方案添加赏金.如果问题不明确,请询问.

基本上我想ObjectFactory.GetAllInstances<IHandle<TEvent>>()返回处理程序TEvent …

c# structuremap domain-events

5
推荐指数
1
解决办法
1720
查看次数

JQuery自动完成在隐藏输入中存储ID

我不是很擅长Jquery.当用户选择自动完成项时,我正在尝试将ID添加到隐藏字段

HTML

<input type="hidden" value="" name="CountryId" id="CountryId">
Run Code Online (Sandbox Code Playgroud)

使用Javascript

$(document).ready(function () {
    $("#Country").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Address.mvc/CountryList", type: "POST", dataType: "json",
                data: { searchText: request.term, maxResults: 10 },
                success: function (data) {
                response($.map(data, function (item) {
                    return { label: item.Value, value: item.Value, id: item.Key }
                }))
            }
        })
    },
    select: function (event, ui) {
        alert(ui.item ? ("You picked '" + ui.item.label + "' with an ID of " + ui.item.id) : "Nothing selected, input was " + …
Run Code Online (Sandbox Code Playgroud)

jquery

4
推荐指数
1
解决办法
9036
查看次数

Nhibernate组件映射:从数据库查询时,Value Object中的父对象为null

我将我的值Object Item作为组件映射到下面的映射配置

{
            Table("Product");
            Not.LazyLoad();
            Id(x => x.Id, "id");
            Map(x => x.Number, "number");
            Map(x => x.Name, "name");
            Map(x => x.Description, "description");
            Map(x => x.Status, "status");
            HasMany(x => x.ItemLines).Component(
                m =>
                {                                                                               
                        m.Map(x => x.ItemId, "itemid");
                        m.Map(x => x.Qty, "quantity");                      
                    }).Table("productitems").KeyColumn("itemid");
        }

Class structure 


public class ItemLine 
{
    public Product Product { get; set; }
    public Guid ItemId { get; set; }
    public int Qty { get; set; }




    public ItemLine()
    {

    }
    public ItemLine(Product product, Guid itemId, int qty)
    { …
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping fluent-nhibernate value-objects

3
推荐指数
1
解决办法
979
查看次数