小编Gar*_*eth的帖子

bcrypt的.net实现

有谁知道bcrypt的一个很好的实现,我知道这个问题之前已被问过,但它得到的答案很少.我有点不确定只是选择在谷歌中出现的实现,并且我认为我最好在System.Security.Cryptography命名空间中使用sha256,至少我知道它是支持的!你有什么想法?

.net bcrypt bcrypt.net

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

处理NHibernate父子集合的最佳实践

因此,在一个典型的模型中,您的父母可以拥有许多孩子,而孩子只能拥有一个父母,那么如何管理孩子的添加.我一直在使用这种方法;

public class Parent
{
    public Parent()
    {
        Children = new List<Child>();
    }

    public IList<Child> Children
    {
        get;
        private set;
    }
}

public class Child
{
    public Parent Parent
    {
        get;
        set;
    }
}

var child = new Child();
var parent = new Parent();
parent.Children.Add(child);
child.Parent = parent;
Run Code Online (Sandbox Code Playgroud)

问题是,无论我想添加一个新的孩子,我都必须记住添加对孩子和父母的引用,这有点痛苦.我可以将AddChild方法添加到父类,并使其负责添加子项 - 现在的问题是有两种方法可以通过Children属性和方法添加子项.这是一个更好的解决方案吗?

public class Parent
{
    public Parent()
    {
        children = new List<Child>();
    }

    private IList<Child> children
    {
        get;
        private set;
    }

    public IEnumerable<Child> Children
    {
        get
        {
            return children;
        } …
Run Code Online (Sandbox Code Playgroud)

nhibernate domain-driven-design

11
推荐指数
3
解决办法
3703
查看次数

NHibernate HiLo - 每个实体的新列和HiLo捕获

我目前正在为我的课程使用hilo id生成器,但刚刚使用了最少的设置,例如


<class name="ClassA">
    <id name="Id" column="id" unsaved-value="0">
      <generator class="hilo" />
    </id>
...

但是我真的要为NHibernate指定一个新列来使用foreach实体并为它提供最大值吗?


<class name="ClassA">
    <id name="Id" column="id" unsaved-value="0">
      <generator class="hilo">
        <param name="table">hibernate_unique_key</param>
        <param name="column">classA_nexthi</param>
        <param name="max_lo">20</param>
      </generator>
    </id>
...
<class name="ClassB">
    <id name="Id" column="id" unsaved-value="0">
      <generator class="hilo">
        <param name="table">hibernate_unique_key</param>
        <param name="column">classB_nexthi</param>
        <param name="max_lo">20</param>
      </generator>
    </id>
...
Run Code Online (Sandbox Code Playgroud)

另外我注意到,当我执行上述操作时,SchemaExport将不会创建所有列 - 只有classB_nexthi,还有其他我做错了.

nhibernate nhibernate-mapping hilo

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

如何使用代码配置nservicebus msmqtransport

我刚刚开始使用NServiceBus,并且无法弄清楚在代码中配置MsmqTransport时我缺少的东西.如果我像这样配置发布者;

IBus bus = Configure.With()
                        .CastleWindsorBuilder()
                        .XmlSerializer()
                        .MsmqSubscriptionStorage()
                        .MsmqTransport()
                            .IsTransactional(true)
                            .PurgeOnStartup(false)
                        .UnicastBus()
                            .ImpersonateSender(false)
                        .CreateBus()
                        .Start();
bus.Publish(new Message(DateTime.Now));
Run Code Online (Sandbox Code Playgroud)

和app.config一样


<configSections>
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
</configSections>
<MsmqTransportConfig 
    InputQueue="testapps_messagebus" 
    ErrorQueue="testapps_errors" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" />

然后一切正常 - 它将创建队列,我可以愉快地消息,但是如果我删除队列,然后再尝试使用这样的代码;

var config = Configure.With()
              .CastleWindsorBuilder()
              .XmlSerializer()
              .UnicastBus()
                  .ImpersonateSender(false)
              .MsmqSubscriptionStorage();
config
    .Configurer
    .ConfigureComponent<MsmqTransport>(NServiceBus.ObjectBuilder.ComponentCallModelEnum.None)
        .ConfigureProperty(x => x.InputQueue, "testapps_messagebus")
        .ConfigureProperty(x => x.NumberOfWorkerThreads, 1)
        .ConfigureProperty(x => x.ErrorQueue, "testapps_errors")
        .ConfigureProperty(x => x.MaxRetries, 5);

IBus bus = config
         .CreateBus()
         .Start();

bus.Publish(new Message(DateTime.Now));
Run Code Online (Sandbox Code Playgroud)

消息似乎丢失了,因为它们没有出现在任何队列中也没有得到处理 - 我猜我错过了什么,但我看不到哪里.

nservicebus

6
推荐指数
1
解决办法
4775
查看次数

在哪里查看用户电子邮件尚不存在?

我有一个创建对象的帐户对象,就像这样;

public class Account
{
    public ICollection<User> Users { get; set; }

    public User CreateUser(string email)
    {
        User user = new User(email);
        user.Account = this;
        Users.Add(user);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的服务层中,创建新用户时,我调用此方法。但是,有一个规则,即用户电子邮件对于该帐户必须是唯一的,那么该去哪里呢?对我来说,它应该放在CreateUser方法中,并带有额外的一行,该行仅检查电子邮件对于帐户而言是唯一的。

但是,如果要这样做,则将需要加载该帐户的所有用户,这对我来说似乎有些负担。最好在数据库中查询用户的电子邮件-但在该方法中这样做将需要在account对象中存储一个库,不是吗?答案可能就是从存储库加载帐户而不是这样做。

var accountRepository.Get(12);
//instead do
var accountRepository.GetWithUserLoadedOnEmail(12, "someone@example.com");
Run Code Online (Sandbox Code Playgroud)

然后,该帐户对象仍可以检查Users集合中的电子邮件,并且如果找到该电子邮件对象,则将它急切地装入其中。

这样行吗?你会怎么做?

我正在使用NHibernate作为ORM。

domain-driven-design

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

城堡windsor容器可以返回实现2个接口的组件的相同实例

Castle Windsor Container是否可以让一个组件实现两个不同的接口,然后在解析它时返回相同的组件实例?例如;

var windsor = new WindsorContainer()
    .AddComponent<InterfaceA, ClassAB>()
    .AddComponent<InterfaceB, ClassAB>();

var classAB1 = windsor.Resolve<InterfaceA>();
var classAB2 = windsor.Resolve<InterfaceB>();

Assert.AreSame(classAB1, classAB2);
Run Code Online (Sandbox Code Playgroud)

如果我按照所示尝试这个,我得到一个异常,消息已经为给定的密钥注册了一个组件,如果我提供了不同的密钥,那么它将返回该类的两个独立实例ClassAB.

编辑:理想情况下,我想在配置文件中执行此操作.

castle-windsor

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

为什么NHibernate删除然后在select上插入复合元素?

有人可以向我解释NHibernate如何处理复合元素的这个小谜.

我的课程看起来像这样;

public class Blog
{
    public virtual int Id
    {
        get;
        private set;
    }

    public virtual ISet<Comment> Comments
    {
        get;
        set;
    }
}

public class Comment
{
    public virtual string CommentText
    {
        get;
        set;
    }

    public virtual DateTime Date
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

和这样的映射;

<class name="Blog" table="blog">
    <id name="Id" column="id" unsaved-value="0">
      <generator class="hilo"/>
    </id>

    <set name="Comments" table="blog_comments">
      <key column="blog_id" />
      <composite-element class="Comment">
        <property name="CommentText" column="comment" not-null="true" />
        <property name="Date" column="date" not-null="true" />
      </composite-element>
    </set>

  </class>
Run Code Online (Sandbox Code Playgroud)

但是当我执行这样的选择时;


using (ITransaction …
Run Code Online (Sandbox Code Playgroud)

nhibernate

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

如何使用J Oliver的EventStore库?

我一直在寻找使用J Oliver的EventStore和mongo作为持久层的新项目的事件采购,但是遇到了一些问题:

  1. 在尝试事件采购之前,我的域名持久存储到数据库中,我一直在使用Udi的域事件模式,这对我来说非常有效,NHibernate管理工作单元.但是我最终得到了一个可以影响多个聚合的工作单元,例如.

    我"结帐"我的购物篮聚合,它会引发一个事件,处理程序通过创建发票聚合来响应,这反过来又会引发一个事件(这只是一个例子)

    在这种情况下,我有一个工作单元改变了两个聚合根 - 在事件存储中我可以将引发的事件添加到两个不同的事件流中,但它们不会以原子方式持久化(第一个可能成功,第二个失败) .那么人们做些什么来避免发生这种情况呢?

  2. 在github主页上,它建议您可以使用流畅的界面来配置EventStore,但是当我下载源代码时,编译它并查看示例中的连接类似乎不可用 - 它是否在不同的分支中?(我有主人)

  3. 处理IStoreEvents impl的推荐方法是什么?作为一个类似于Nhibernates会议工厂的单身人士?

cqrs

2
推荐指数
1
解决办法
903
查看次数