小编Col*_*e W的帖子

NHibernate Validator没有与Fluent NHibernate集成

我在让NHV与Fluent NHibernate合作时遇到了一些麻烦.我拥有的单元测试有一个应该失败的实体,最终会抛出一个ADO异常.我有以下方式配置NHV:

    private static void Init()
    {
            _SessionFactory = Fluently.Configure()
              .Database(MsSqlConfiguration.MsSql2005.ConnectionString(connectionString)
                  .ShowSql())
              .Mappings(m =>
                  m.FluentMappings.AddFromAssemblyOf<SessionFactory>()
                  .ExportTo(pathToExportMappingsTo))
              .ProxyFactoryFactory("NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu")
              .ExposeConfiguration(ConfigureNhibernateValidator)
              .BuildSessionFactory();
    }

    private static void ConfigureNhibernateValidator(Configuration config)
    {
        var nhvConfiguration = new NHibernate.Validator.Cfg.Loquacious.FluentConfiguration();
        nhvConfiguration
           .SetDefaultValidatorMode(ValidatorMode.OverrideAttributeWithExternal)
           .Register(Assembly.Load("Business.Objects")
           .ValidationDefinitions())
           .IntegrateWithNHibernate
               .RegisteringListeners();

        ValidatorEngine validatorEngine = new ValidatorEngine();
        validatorEngine.Configure(nhvConfiguration);

        ValidatorInitializer.Initialize(config, validatorEngine);
    }
Run Code Online (Sandbox Code Playgroud)

我现在已经多次查看过这个配置并搜索了互联网,试图找出这个有什么问题.我还查看了NHV源中提供的示例,但我无法弄清楚为什么我的单元测试不会抛出InvalidStateException.我有一个单元测试来验证应该失败的同一个实体,它通过验证引擎直接验证它,这是有效的.

有没有人看到上述配置有什么问题?

我正在使用NHibernate 3.1,NHibernate Validator 1.3Fluent NHibernate 1.2.0.712

nhibernate fluent-nhibernate nhibernate-validator

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

c ++ std :: vector std :: sort无限循环

每当我试图对导致无限循环的对象矢量进行排序时,我就遇到了一个问题.我正在使用我传递给sort函数的自定义比较函数.

我能够通过在两个对象相等而不是true时返回false来解决问题但我并不完全理解解决方案.我认为这是因为我的比较功能违反了cplusplus.com上列出的规则:

比较函数对象,如果第一个参数位于其定义的特定严格弱顺序中的第二个参数之前,则返回两个与该范围中包含的相同类型的值,否则返回false.

任何人都可以提供更详细的解释吗?

c++ sorting stdvector

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

queryover中的NHibernate视图返回重复记录

我似乎对我用NHibernate映射的一个数据库视图有一个奇怪的问题.我正在为我映射的其中一个视图获取重复记录.我有以下视图对象

                      WorkDetailView
                       /          \
                      /            \
                     /              \
                    /                \
          PickWorkDetailView    PutWorkDetailView
Run Code Online (Sandbox Code Playgroud)

每个对象表示在数据库中,但两者有不同的看法PickWorkDetailViewPutWorkDetailView继承WorkDetailView,因为它们共享许多相同的字段.

如果我运行以下代码,我得到2个结果,但如果我在SQL Management Studio中运行实际的数据库视图,我得到1个结果.

List<WorkDetailView> workList = session.QueryOver<WorkDetailView>()
                                       .List<WorkDetailView>().ToList();
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我查看workList上面集合中的所有项目时,我看到一个WorkDetailView对象和一个PickWorkDetailView对象.另外,如果我查看NHibernate正在运行的查询,则会从所有3个视图(WorkDetailView,PickWorkDetailView和PutWorkDetailView)中选择问题.这根本听起来不对.如果需要,我可以发布xml映射或我的流畅映射.

nhibernate fluent-nhibernate

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

将包管理默认为PackageReference

在Nuget.Config中有没有办法将Package Management选项默认为"PackageReference"?我会假设没有,因为我没有在这里看到它,但我想我会问.

我希望在某个存储库的所有开发人员机器上默认这个,我希望我可以在存储在源代码管理中的Nuget.Config文件中更改它.

这就是我所说的:

在此输入图像描述

nuget nuget-package-restore

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

流利的Nhibernate - HasMany - 未保存子对象

我有一个ReportRequest对象定义为:

public class ReportRequest
{
    public virtual Int32? Id { get; set; }
    public virtual string Description { get; set; }
    public virtual IList<ReportClient> ReportClients{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

和ReportClient定义为:

public class ReportClient
{
    public virtual int? Id { get; set; }

    public virtual long? ClientId { get; set; }

    public virtual string Name { get; set; }

    public virtual string EmailAddress { get; set; }

    public virtual IList<ReportClient> ChildClients { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ReportClient的映射:

public class ReportClientMap : ClassMap<ReportClient>
{
    public …
Run Code Online (Sandbox Code Playgroud)

nhibernate fluent-nhibernate

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

调试非托管应用程序并同时管理C#dll

我的设置:
Application.exe(Visual Studio 6.0 C++)
Component.dll(Visual Studio 2010 C#)
Application.exe使用Component.dll

我希望能够同时调试我的Visual Studio 6.0 C++应用程序和它使用的Visual Studio 2010 C#组件,但我不确定这是否可行.

我尝试从Visual Studio 6.0启动应用程序并附加到我的Visual Studio 2010组件解决方案中的该进程(Application.exe),但是当我转到附加到进程(Application.exe)时,它显示为灰色.我尝试切换Attach To:Native但是这不允许我附加到这个过程.我的Application.exe仍然在窗口中显示为灰色.

有可能这样做,如果是这样的话怎么样?

c# com visual-studio-2010

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

无法更改签名(v6.1)

似乎我无法Change Signature在Resharper(v6.1)中执行该选项.这是我第一次使用它,所以我不确定是否需要启用它.

每当我右键单击方法名称时,我只有2个选项. Refactor This...Rename....

我希望能够更改签名,但我无法使用该选项.

有任何想法吗?

附加信息

Visual Studio 2010(v10.0.40219.1 SP1Rel)
C#

以下是我尝试更改签名的方法.这是基类中的方法.我突出显示了方法名称(ConfirmPick)并右键单击它以尝试更改签名.

public ExactaResult ConfirmPick(Guid locationId, decimal quantityPicked, bool isFullContainer = false)
Run Code Online (Sandbox Code Playgroud)

resharper

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

乘以时的c ++复合赋值

有没有办法使用复合赋值运算符来实现这样的事情:

a = (a * 10) + b;
Run Code Online (Sandbox Code Playgroud)

最初我尝试了以下内容:

a *= 10 + b;
Run Code Online (Sandbox Code Playgroud)

但这相当于:

a = a * (10 + b)
Run Code Online (Sandbox Code Playgroud)

只是好奇.今天跑过这个.这不是功课.

c++

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

C++指针问题

我有一个我似乎无法弄清楚的指针问题.看起来我已经用这种方式使用指针了1000次,所以我不太清楚这里发生了什么.我有以下代码:

int iRetVal;
CycleCountOrder* cycleOrder =  NULL;
CycleCountLineItem* cycleLine = NULL;


iRetVal = m_CycleCount.GetCCOrderLine(pOneLocation.szOrderNum[c], cycleOrder, cycleLine);
Run Code Online (Sandbox Code Playgroud)

每当我调用GetCCOrderLine时,我都会进入函数内部,并为指针cycleOrder和cycleLine分配有效值.当我走出函数GetCCOrderLine之外时,引用再次为NULL.下面的代码是如何定义GetCCOrderLine:

头文件

int GetCCOrderLine(CString szOrderLnitem, CycleCountOrder* cycleOrder, CycleCountLineItem* cycleCountLine);
Run Code Online (Sandbox Code Playgroud)

cpp文件

int CCycleCount::GetCCOrderLine(CString szOrderLnitem, CycleCountOrder* cycleOrder, CycleCountLineItem* cycleCountLine)
{
    CString szCurrOrderLnitem;
    for(int c = 0; c < m_Orders.GetCount(); c++)
    {
        CycleCountOrder* currentOrder = m_Orders[c];

        for(int d = 0; d < currentOrder->m_LineItems.GetCount(); d++)
        {
            CycleCountLineItem* currentLine = currentOrder->m_LineItems[d];

            szCurrOrderLnitem.Format("%s-%d-%d", currentOrder->szOrderNum, currentLine->nLnitemNum, currentLine->nSubitemNum);

            if(szCurrOrderLnitem == szOrderLnitem)
            {
                cycleOrder = currentOrder;
                cycleCountLine = currentLine;
                return FUNC_OK;
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c++ pointers pass-by-reference pass-by-value

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

错误:流畅的NHibernate映射,它引用了不同程序集中的映射

我的公司有多个站点,它们引用相同的DB和Core代码库.然后我们有一个管理数据的CMS.

在Core库中,我有一个Site类,它包含有关每个站点的一堆基本信息.这是我对它的流畅映射.

using Core.Model;  // Where Site class exists

namespace Core.Repository.NHibernate.Mappings
{
    public class SiteMapping : ClassMap<Site>
    {
        public SiteMapping()
        {
            Table("f_site");
            Id(x => x.Id, "f_site_id").GeneratedBy.Identity();
            Map(x => x.Domain, "domain_name").Not.Nullable();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

作为CMS的一部分,我们会记录谁编辑了什么以及何时编辑.但我想只在CMS中引用Log类和映射,而不是在我的核心代码中,因为人们只能通过CMS编辑信息.

这是我当前流向Log类的流程映射,它引用了Site类.

using Core.Model; // where Site class exists
using Cms.Model; // where Log and CmsUser classes exists

namespace Cms.Repository.NHibernate.Mappings
{
    public class LogMapping : ClassMap<Log>
    {
        public LogMapping()
        {
            Table("f_log");
            Id(x => x.Id, "f_log_id").GeneratedBy.Identity();
            Map(x => x.Message, "message");
            Map(x => x.LogType, "d_log_type_id").CustomType<LogType>();
            Map(x => x.LogOperation, "d_log_operation_id").CustomType<LogOperation>(); …
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping

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

将XmlDocument转换为Dictionary <string,string>

我正在寻找一种转换XmlDocumentDictionary<string, string>使用Linq 的好方法.

我的xml格式如下:

<config>
    <field>value</field>
    <field2>value2</field2>
</config>
Run Code Online (Sandbox Code Playgroud)

我想把它放到一个字典中,键值对看起来像这样:

字段,值字段2,值
2

我想我应该使用Linq这样做,但我不确定语法.

c# xml linq

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

设置AssemblyFileVersion不起作用

我想设置我的汇编文件版本如下:6.0.ddMMyy.build数字,但它似乎没有工作,我认为这是由版本号只接受某些值引起的.

例:

[assembly: AssemblyFileVersion("6.0.100213.1")]
Run Code Online (Sandbox Code Playgroud)

每次编译程序集时,都会产生以下版本号:

6.0.34677.1
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

c#

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

非集群外键索引推荐

我的数据库中有几个表是父子关系。例如:

CREATE TABLE [dbo].[cntnr_header] 
(
    [cntnr_id]            [dbo].[uid]     NOT NULL,
    CONSTRAINT [pk_cntnr_header] PRIMARY KEY CLUSTERED ([cntnr_id] ASC),
);

CREATE TABLE [dbo].[cntnr_content] 
(
    [cntnr_content_id]  [dbo].[uid]       NOT NULL,
    [cntnr_id]          [dbo].[uid]       NOT NULL,
    CONSTRAINT [pk_cntnr_content] 
       PRIMARY KEY CLUSTERED ([cntnr_content_id] ASC),
    CONSTRAINT [fk_cntnr_content_cntnr_header] 
       FOREIGN KEY ([cntnr_id]) 
       REFERENCES [dbo].[cntnr_header] ([cntnr_id]),
);
Run Code Online (Sandbox Code Playgroud)

如您所见,当前cntnr_id在表中的外键上没有索引cntnr_content。我运行了调优向导,实际上我看到它建议为表cntnr_content_idcntnr_id表都添加一个非聚集索引cntnr_content。我不太了解这一点,因为cntnr_content_id它已经是聚集索引。为什么会推荐这样的索引?

CREATE NONCLUSTERED INDEX [_dta_index_cntnr_content_7_821577965__K1_K2] ON [dbo].[cntnr_content]
(
    [cntnr_content_id] ASC,
    [cntnr_id] ASC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON …
Run Code Online (Sandbox Code Playgroud)

sql-server indexing foreign-keys sql-server-2012

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