小编Ale*_*son的帖子

EF 4.2 Code First和DDD设计问题

尝试首先使用EF 4.2(或EF 4.1)代码进行DDD开发时,我有几个问题.我做了一些广泛的研究,但没有为我的具体问题提出具体的答案.以下是我的担忧:

  1. 域无法了解持久层,或者换句话说,域与EF完全分离.但是,要将数据持久保存到数据库,必须将每个实体附加到EF上下文或添加到EF上下文.我知道你应该使用工厂来创建聚合根的实例,这样工厂就可以用EF上下文注册创建的实体.这似乎违反了DDD规则,因为工厂是域的一部分而不是持久层的一部分.我应该如何创建和注册实体,以便在需要时正确地持久保存到数据库?

  2. 聚合实体是否应该创建它的子实体?我的意思是,如果我有一个Organization并且Organization有一个Employee实体集合,应该Organization有一个方法,如CreateEmployeeAddEmployee?如果不是创建Employee实体的地方,请记住Organization聚合根'拥有'每个Employee实体.

  3. 首先使用EF代码时,每个实体的ID(以数据库中的标识列的形式)将自动处理,通常不会被用户代码更改.由于DDD声明域与持久性无知是分开的,因此在域中公开ID似乎很奇怪,因为这意味着域应该处理为新创建的实体分配唯一ID.我应该关注暴露实体的ID属性吗?

我意识到这些是一些开放式的设计问题,但我正在努力坚持DDD设计模式,同时使用EF作为我的持久层.

提前致谢!

design-patterns domain-driven-design entity-framework ef-code-first

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

使用RSA-SHA256签名方法问题签署Xml文档

我使用以下方法签署Xml文档:

public static XmlDocument SignDocument(XmlDocument doc)
    {
        string signatureCanonicalizationMethod = "http://www.w3.org/2001/10/xml-exc-c14n#";
        string signatureMethod = @"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
        string digestMethod = @"http://www.w3.org/2001/04/xmlenc#sha256";

        string signatureReferenceURI = "#_73e63a41-156d-4fda-a26c-8d79dcade713";

        CryptoConfig.AddAlgorithm(typeof(RSAPKCS1SHA256SignatureDescription), signatureMethod);

        var signingCertificate = GetCertificate();

        SignedXml signer = new SignedXml(doc);
        signer.SigningKey = signingCertificate.PrivateKey;
        signer.KeyInfo = new KeyInfo();
        signer.KeyInfo.AddClause(new KeyInfoX509Data(signingCertificate));

        signer.SignedInfo.CanonicalizationMethod = signatureCanonicalizationMethod;
        signer.SignedInfo.SignatureMethod = signatureMethod;

        XmlDsigEnvelopedSignatureTransform envelopeTransform = new XmlDsigEnvelopedSignatureTransform();
        XmlDsigExcC14NTransform cn14Transform = new XmlDsigExcC14NTransform();

        Reference signatureReference = new Reference();
        signatureReference.Uri = signatureReferenceURI;
        signatureReference.AddTransform(envelopeTransform);
        signatureReference.AddTransform(cn14Transform);
        signatureReference.DigestMethod = digestMethod;

        signer.AddReference(signatureReference);

        signer.ComputeSignature();
        XmlElement signatureElement = signer.GetXml();

        doc.DocumentElement.AppendChild(signer.GetXml());

        return …
Run Code Online (Sandbox Code Playgroud)

c# signedxml

7
推荐指数
1
解决办法
9926
查看次数

jQuery UI模式对话框覆盖淡出

是否可以在jQuery UI模式对话框覆盖上应用淡出效果?问题是当关闭模态对话框时,会破坏叠加div,从而阻止任何类型的动画.这是我有的代码,如果覆盖div没有在关闭时销毁.

$("#edit-dialog-box").dialog(
{
    autoOpen: false,
    modal: true,
    width: "30em",
    show: "fade",
    hide: "fade",
    open: function()
    {
        $(".ui-widget-overlay").hide().fadeIn();
    },
    close: function()
    {
        $(".ui-widget-overlay").fadeOut();
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery animation overlay modal-dialog

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

C++对简单类型(Vector3,Matrix等)的rvalue引用构造函数的好处

如果传递的对象没有复杂数据,使用右值引用是否有任何优势?例如,以下是否比使用引用有任何优势?

class Vector3
{
public:
    float X, Y, Z;

    Vector3(const Vector2& vector2, float z)
        : X(vector2.X), Y(vector2.Y), Z(z)
    {

    }

    // Is this any better than the above?
    Vector3(Vector2&& vector2, float z)
        : X(std::move(vector2.X), Y(std::move(vector2.Y), Z(z)
    {

    }
};
Run Code Online (Sandbox Code Playgroud)

c++ reference rvalue

0
推荐指数
1
解决办法
98
查看次数