小编mez*_*oid的帖子

如何限制NHibernate的GetByCriteria撤回的结果集?

我有一个NHibernate Dao ..lets称它为MyClassDao因为想要一个更好的名字.

我正在编写以下代码.

MyClassDao myDao = new MyClassDao();

var values = myDao.GetByCriteria(Restrictions.Eq("Status", someStatusValue));
Run Code Online (Sandbox Code Playgroud)

我在单元测试中使用它来从数据库中提取值.然而,它接管了30秒的运行测试,过长在我看来...所以我想要做的是限制结果集拉回...说大约5的值.

在SQL中我会做类似以下的事情来实现这样的事情

set rowcount 5
select * from whatever_table
set rowcount 0
Run Code Online (Sandbox Code Playgroud)

有没有办法...不使用NHibernate查询语言来限制结果集的大小?

c# nhibernate criteria resultset restriction

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

有没有最好的方法来处理命名时尚?

在过去的一年中,我的团队代码基础上有一些工作,我注意到命名约定的稳步发展.

例如,有很多类被命名为表达它们是一个可以帮助你做某事的类.

这是我发现的:

MyClassUtil
MyClassFactory
MyClassHelper
MyClassManager
MyClassService
Run Code Online (Sandbox Code Playgroud)

在我看来,随着时间的推移,人们会为相对相同的事情提出命名约定,因此您不必以一致的方式命名所有内容,而是使用具有一些约定的代码库.所有新东西都是根据最新的时尚命名惯例命名的,所以你几乎可以通过当时流行的惯例告诉一些代码的时代.

处理这种趋势的最佳方法是什么?这真的是个问题吗?随着这些命名时尚流行,人们应该使用最新的时尚吗?是否应该使用新的命名约定重命名所有现有项目?或者,人们应该接受这种多样性作为不可避免的东西?

naming-conventions fad

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

我是否应该专注于桌面开发或了解有关Web应用程序开发的更多信息?

让我自我介绍一下.

  1. 我有7年的C++(大多数MFC)经验,1年的C#.NET和2年的Java经验.
  2. 我对Web应用程序知之甚少,我所做的和我正在做的是Windows桌面应用程序.

在过去的半年里,我开始做一些(小的)(自由职业)辅助项目,并且主要使用C#,因为它比MFC更"快速".但似乎这个市场上的网络项目比桌面项目更多.只要我不了解网站开发,我就感觉不舒服.

那么,我应该触摸为我提交的新网站,还是只关注桌面应用程序,但要了解更多信息,例如Python,或者像Qt或Boost这样的框架/库?

programming-languages

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

如何为ASPX UserControl属性设置默认值?

我在页面上定义了一个用户控件,如下所示:

<uc:MyUserControl ID="MyUserControl" runat="server" Visible="true" />
Run Code Online (Sandbox Code Playgroud)

我想在具有自定义属性的不同页面上重用相同的控件,如下所示:

<uc:MyUserControl ID="MyUserControl" runat="server" Visible="true" 
MyCustomProperty="MyCustomText" />
Run Code Online (Sandbox Code Playgroud)

MyCustomProperty的目的是将MyUserControl中的某些文本控制为我指定的任何文本.

对于第一种情况,我希望文本是"查看",对于第二种情况,我希望它是"MyCustomText".

在我的用户控件中,我有以下代码来定义属性:

[DefaultValue("View")]
public string MyCustomProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

我还有以下代码来更新基于属性的文本:

LinkButton buttonSelect = e.Item.FindControl("ButtonSelect") as LinkButton;
if(buttonSelect != null) buttonSelect.Text = MyCustomProperty;
Run Code Online (Sandbox Code Playgroud)

实际发生的情况是,在第一种情况下未提供自定义属性时,MyCustomProperty == null.

我试图通过添加DefaultValue属性来指定默认值应为"View",但它没有我想要的影响.

谁能发现我做错了什么?

c# user-controls default-value custom-properties

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

有没有人知道任何APEX重构工具?

拥有我所在公司的公司最近单方面决定salesforce.com和force.com平台是我们的目标.目前,我们是一家C#.NET商店,我们经常在日常工作中使用Visual Studio和Resharper.

我对这个决定并不满意,但是,就像任何优秀的开发者一样,我愿意给它一个机会并研究这项新技术,看看如果我被迫决定从一个过渡的话,会发生什么样的事情. NET到APEX开发人员.到目前为止,我必须承认不会对Force.com平台留下深刻的印象.公平地说,有些事情看起来很不错......但其他事情只是糟透了......只要看看他们关于什么构成良好的 单元测试的想法......幸运的是,这些错误是我可以避免的事实无论salesforce.com的文档背后的人多少,都要编写适当的单元测试....

然而,对于咆哮感到抱歉(我真的需要把它从我的胸口那里拿走),我发现的一件事,我知道我真正想念的是像Resharper这样的好的重构工具.作为一名.NET开发人员,Resharper可以做很多繁重的工作,否则我会犹豫不决.它还使得开发TDD样式变得更加容易,因为只需几次击键就可以轻松创建新的方法和属性.因此,我正在寻找可用于Eclipse和APEX编程语言的任何重构工具.我已经下载并安装了force.com开发者网站推荐的工具,但到目前为止,我看到很少有重构支持的方式.

有没有人知道是否存在与APEX编程语言一起使用的重构工具?

eclipse refactoring eclipse-plugin salesforce apex-code

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

如何让 NHibernate 加入?

我已经使用 Fluent NHibernate 连接了一个商店和员工类,其中 Stores 可以有很多员工,如下所示:

public class Store
{
    public virtual IList<Employee> Employees { get; set; }
    //other store properties
}

public class Employee
{
    public virtual Store Store { get; set; }   
    public virtual bool? SomeStatus1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要获取所有员工未将 SomeStatus1 设置为 true 的商店。

我在这里的成功尝试失败了:

Session.CreateCriteria(typeof(Store))
    .Add(Restrictions.Not(Restrictions.Eq("Employees.SomeStatus1", true))
    .List<Store>();
Run Code Online (Sandbox Code Playgroud)

知道我该怎么做吗?

我的尝试失败的原因是因为列表 Employees 没有 SomeStatus1 的属性......这是相当明显的。

我不知道的是如何让 NHibernate 只获得在我正在寻找的州有员工的商店......

我想我想问 NHibernate 是做一个加入......但我不知道如何要求它这样做......

c# nhibernate fluent-nhibernate createcriteria

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

类模板的"类没有构造函数"错误

我正在创建一个链表,我只想在列表的前面添加一个节点.我究竟做错了什么?

Node.h

 #pragma once

 namespace list_1
 {
template <typename T>
struct Node
{
    T data;
    Node<T> *next;

    // Constructor
    // Postcondition: 
    Node<T> (T d);
};

template <typename T>
Node<T>::Node(T d)
{
    data = d;
    next = NULL;
}
 }
Run Code Online (Sandbox Code Playgroud)

list.h

template <typename T>
void list<T>::insert_front(const T& entry)
{
    Node<T> *temp = head;

    if(temp == NULL)
        temp->next = new Node(entry);
    else
    {
        while (temp->next != NULL)
        {
           temp = temp->next;
        }

        temp->next = new Node(entry);
    }
}
Run Code Online (Sandbox Code Playgroud)

错误信息;

 1>------ Build started: …
Run Code Online (Sandbox Code Playgroud)

c++ linked-list insert

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

如何合并DataSet中的两列?

以前我曾询问过如何在数据集中插入一列.我现在有一个类似的问题......即将两列或多列合并为一列.

假设我有以下数据集:

DataSet ds = new DataSet();
ds.Tables.Add(new DataTable());
ds.Tables[0].Columns.Add("id", typeof(int));
ds.Tables[0].Columns.Add("firstname", typeof(string));
ds.Tables[0].Columns.Add("lastname", typeof(string));
Run Code Online (Sandbox Code Playgroud)

我需要将"firstname"和"lastname"列合并到一个名为"name"的列中.

我最好创建一个将两列合并在一起的方法,还是可以用来将多列合并在一起的更通用的方法?

我的想法是创建一个类似于以下的通用方法:

MergeColumns(字符串格式,字符串mergedColumn,DataTable dt,params string [] columnsToMerge)

用户提供如下格式:"{0} {1}"

mergedColumn是新列的名称...但它必须能够与将要合并的列之一相同,因为在我的真实案例中我将"name"和"given_names"合并为"name" ...但是如果我需要将"街道","城市","州","邮政编码"等合并到名为"地址"的列中,我仍然希望能够使用它.

我认为这将使用的方式如下:

MergeColumns("{0} {1}","name",dataTable,"firstname","lastname");

鉴于上述数据集,我希望结果数据集看起来如下:

DataSet ds = new DataSet();
ds.Tables.Add(new DataTable());
ds.Tables[0].Columns.Add("id", typeof(int));
ds.Tables[0].Columns.Add("name", typeof(string));
Run Code Online (Sandbox Code Playgroud)

这看起来像是一种合理的方法吗?这样的方法是否已经存在?我不想重新发明轮子.另外,我是否正在创建一种比我现在实际需要的更多的方法?

c# merge dataset

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

这是使用和测试使用工厂模式的类的正确方法吗?

我没有很多工厂模式的经验,我遇到过一个我认为有必要的情况,但我不确定我是否已经正确实施了模式,我担心它的影响是什么我的单元测试的可读性.

我创建了一个代码片段,它近似(从内存中)我正在工作的场景的本质.我真的很感激,如果有人可以看看它,看看我做了什么似乎是合理的.

这是我需要测试的类:

public class SomeCalculator : ICalculateSomething
{
    private readonly IReducerFactory reducerFactory;
    private IReducer reducer;

    public SomeCalculator(IReducerFactory reducerFactory)
    {
        this.reducerFactory = reducerFactory;
    }

    public SomeCalculator() : this(new ReducerFactory()){}

    public decimal Calculate(SomeObject so)
    {   
        reducer = reducerFactory.Create(so.CalculationMethod);

        decimal calculatedAmount = so.Amount * so.Amount;

        return reducer.Reduce(so, calculatedAmount);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是一些基本的界面定义......

public interface ICalculateSomething
{
    decimal Calculate(SomeObject so);
}

public interface IReducerFactory
{
    IReducer Create(CalculationMethod cm);
}

public interface IReducer
{
    decimal Reduce(SomeObject so, decimal amount);
}
Run Code Online (Sandbox Code Playgroud)

这是我创建的工厂.我当前的要求让我添加了一个特定的Reducer MethodAReducer,用于特定场景,这就是为什么我要介绍一个工厂.

public class ReducerFactory …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq factory-pattern

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

Test Data Builder构造是否应默认为非原语?

我已经创建了一个数据构建器,以便在我的单元测试中创建测试数据.我的数据构建器为所有属性创建默认值,以便使用它们的测试只需指定适用于测试的属性.

请考虑以下构建器:

public class CustomerBuilder
{
    public int id = 0;
    public Order order = new OrderBuilder().Build();

    public CustomerBuilder WithId(int id)
    {
        this.id = id;
        return this;
    }

    public CustomerBuilder WithOrder(Order order)
    {
        this.order = order;
        return this;
    }

    public Customer Build()
    {
        return new Customer(id, order);
    }
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,如果我需要在测试中创建一个客户,其中id对我很重要但订单无关紧要,我可以按如下方式创建对象:

Customer c = new CustomerBuilder()
                  .WithId(99)
                  .Build();
Run Code Online (Sandbox Code Playgroud)

这是一个好主意吗?或者,为什么不应该假设应该如何构建非原始属性?

design-patterns builder-pattern c#-3.0

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