每当我必须估计一个项目的时间(或审查其他人的估计)时,就会在alpha版本和生产版本之间分配测试/错误修复的时间.我非常清楚,对于未知大小的问题集,到目前为止对未来的估计并不是成功估算的好方法.然而,由于各种原因,一定程度的小时数总是在一开始就分配给这部分工作.而这个初始估计距离真实的最终值越远,那些参与调试的人就越需要在他们"超过"估计值时采取的悲伤.
所以我的问题是:你在制定这样的估算时看到的最佳策略是什么?整体开发估计的百分比是平的吗?设定小时数(期望它会上升)?别的什么?
还需要考虑的其他事项:如果客户负责测试(而不是内部质量保证),您将如何回答这种情况,并且您必须分配一定的时间来回应他们可能找到或未找到的错误(因此您需要找出错误修复的时间估计但不测试
我在c sharp中使用下面的代码.但是两个WriteLine语句都给出了相同的结果25.那么在c sharp中转换Tostring需要什么?有什么特别的目的吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace sample
{
class Program
{
static void Main(string[] args)
{
int value = 25;
Console.WriteLine(value.ToString());
Console.WriteLine(value);
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的Asp.net项目中有一个UserControl,它有一个公共属性.当用户在IDE中突出显示UserControl的实例时,我不希望此属性显示在Visual Studio属性窗口中.我应该使用什么属性(或其他方法)来防止它出现?
class MyControl : System.Web.UI.UserControl {
// Attribute to prevent property from showing in VS Property Window?
public bool SampleProperty { get; set; }
// other stuff
}
Run Code Online (Sandbox Code Playgroud) 我有以下设置:
业务逻辑库执行所有数据库访问.它通过访问System.Configuration.ConfigurationManager.ConnectionStrings从Web站点的web.config文件获取连接字符串.当网站调用库时,这可以正常工作,因为库会查找调用者的配置.
我希望能够通过单元测试类库测试我的业务逻辑.我在测试类库的根目录中放了一个App.config文件.根据我的阅读,当测试库调用属于业务逻辑库的数据访问过程时,应该访问和使用测试库的App.config文件中的连接设置.但是,当我尝试运行单元测试时,我收到错误,表明测试库的App.config文件(和/或其内容)未成功访问.
我对配置属性的检索(来自业务逻辑库)如下所示:
public SqlConnection MainConnection {
get {
string conn = "";
try {
conn = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
} catch {
// might be calling from test project. Need to reference app settings
conn = System.Configuration.ConfigurationManager.AppSettings["connString"];
}
return new SqlConnection(conn);
}
}
Run Code Online (Sandbox Code Playgroud)
当从网站项目调用它时,它可以工作.在单元测试中,conn变量永远不会设置为任何东西(我也尝试过使用System.Configuration.ConfigurationSettings.AppSettings,而不是使用相同的结果).当从NUnit GUI中调用时,我需要做什么才能使业务逻辑类库成功检索单元测试类库设置?
我需要一个用于文本替换的正则表达式.示例:要匹配的文本ABC(可以用方括号括起来),替换文本是DEF.这很基本.该复杂的是,我不希望在比赛ABC时,它是由前面的图案文字\[[\d ]+\]\.-换句话说,当一个单词之前或设置在括号中的词,随后一段时间.
以下是要匹配的源文本的一些示例,以及在进行正则表达式替换后的结果:
1. [xxx xxx].[ABC] > [xxx xxx].[ABC] (does not match - first part fits the pattern)
2. [xxx xxx].ABC > [xxx xxx].ABC (does not match - first part fits the pattern)
3. [xxx.ABC > [xxx.DEF (matches - first part has no closing bracket)
4. [ABC] > [DEF] (matches - no first part)
5. ABC > DEF (matches - no first part)
6. [xxx][ABC] > [xxx][DEF] (matches - no …Run Code Online (Sandbox Code Playgroud) 该MiniProfiler网站给出了生成实体框架下面的代码ObjectContext:
public static MyModel Get()
{
var conn = new StackExchange.Profiling.Data.EFProfiledDbConnection(GetConnection(), MiniProfiler.Current);
return ObjectContextUtils.CreateObjectContext<MyModel>(conn); // resides in the MiniProfiler.EF nuget pack
}
Run Code Online (Sandbox Code Playgroud)
但是,使用Entity Framework 5,我没有使用ObjectContext- 而是我使用的是DbContext.我不能在这里插入模型名称,因为该CreateObjectContext<T>()方法需要T是类型ObjectContext.(出于同样的原因,此答案中给出的代码也不起作用).
另外,我使用autofac来初始化我的Db连接.这是使用以下内容注册的(MyData=我的EF DataContext的名称):
Builder.RegisterType<MyData>().As<DbContext>().InstancePerHttpRequest();
Run Code Online (Sandbox Code Playgroud)
因此结合两部分:如何使用autofac初始化与MiniProfiler.EF绑定的DbContext?如果这是不可能的,至少我怎么做第一部分(为MiniProfiler.EF创建一个工厂方法来返回DbContext)?
我使用LinqToSql使用SqlMetal来为我的ASP.net应用程序提供我的DataContext.dbml类.当我最初创建DataContext.dbml文件时,Visual Studio使用它来创建相关的DataContext.designer.cs文件.此设计器文件包含C#中的DataContext类,该类在整个应用程序中使用(并且源自dbml文件中的XML),对于弥合SqlMetal的输出与使用LinqToSql的DataContext之间的差距至关重要.
但是,当我对数据库进行更改并重新创建dbml文件时,设计器文件永远不会在我的网站中重新生成.而是维护旧的设计器文件(因此,无法通过LinqToSql DataContext类访问DBML文件的任何更改).
到目前为止,我能够使用的唯一过程是重新生成设计器文件
当检测到一个还没有designer.cs文件的新dbml文件时,Visual Studio似乎只会生成designer.cs文件.这个过程是非常不切实际的,因为它涉及几个手动步骤并且使用源代码控制来搞乱.
有谁知道如何自动重新生成designer.cs文件而无需遵循上面概述的手动删除/刷新/重新生成/删除过程?
我有一个例程,它将创建单独的表(Sql Server 2008)来存储我的应用程序生成的报告的结果(Asp.net 3.5).每个报告都需要自己的表,因为表的列会根据报告设置而有所不同.一个表将包含10-5,000行之间,很少超过10,000行.
以下使用规则适用:
知道这一点,是否有理由在表上创建PK索引列?这样做是否有助于以任何方式检索数据的性能,如果可以,这将超过插入数据时更新索引的额外负载(我知道10K记录的数量相对较少,但这个解决方案需要是能够扩展).
更新:以下是有关正在处理的数据的更多详细信息,这些信息将在每个报告的一个表的当前设计决策中进行:
我也怀疑有人声称每次报告运行时都必须创建一个新表.但是,考虑到每次运行报告时都可能需要不同的列(数量,名称和数据类型),我看不到一个很好的选择.
我能想到的另一件事是拥有一个ID列(标识ReportVersionID,对应于另一个表),ReferenceValues列(varchar字段,包含所有引用值,按指定顺序,由一些分隔符分隔)和NumericValues列(与ReferenceValues相同,但对于数字),然后当我检索结果时,将所有内容放入系统中的专用对象,根据定义的分隔符分隔值).这看起来更合适吗?
我需要使用Dictionary<long, string>给定两个实例的集合d1以及d2它们各自具有相同KeyValuePair<long, string>内容的集合,这些集合可以按任何顺序插入:
(d1 == d2) 评估为 trued1.GetHashCode() == d2.GetHashCode()通过使用SortedDictionary而不是常规来最容易地实现第一个要求Dictionary.
第二个要求是必要的,因为我需要存储一个点Dictionary<Dictionary<long, string>, List<string>- 主要Dictionary类型用作另一个的键Dictionary,如果HashCodes不基于相同的内容进行评估,则使用ContainsKey()将不会按照我想要的方式工作(即:如果已经有一个项目d1作为其键插入到字典中,那么dictionary.ContainsKey(d2)应该评估为true.
为此,我创建了一个新对象class ComparableDictionary : SortedDictionary<long, string>,并包含以下内容:
public override int GetHashCode() {
StringBuilder str = new StringBuilder();
foreach (var item in this) {
str.Append(item.Key);
str.Append("_");
str.Append(item.Value);
str.Append("%%");
}
return str.ToString().GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
在我的单元测试中,这符合相等和哈希码的标准.但是,在阅读GetHashCode的指南和规则时,我遇到了以下内容:
规则:当对象包含在依赖于哈希代码保持稳定的数据结构中时,GetHashCode返回的整数必须永远不会更改
虽然很危险,但允许一个对象的哈希码值可以随着对象的字段变异而变异.如果你有这样一个对象,并把它放在一个哈希表中,那么改变对象的代码和维护哈希表的代码需要有一些商定的协议,以确保对象在进入时不会发生变异.哈希表.该协议的外观取决于您.
如果对象的哈希代码在哈希表中变异,那么显然Contains方法就会停止工作.你把对象放在#5桶中,你改变它,当你问集合是否包含变异对象时,它会在#74桶中查找并找不到它.
请记住,对象可以以您不期望的方式放入哈希表中.许多LINQ序列运算符在内部使用哈希表.在枚举返回它们的LINQ查询时,不要危险地改变对象! …
/abc我分叉的GitHub上有一个存储库.所以我的叉子在me/abc.
吉姆还在/abc他们的回购中分叉Jim/abc.吉姆加了一个叫做的分支2.0.这个分支不存在/abc.
我已经从me/abc本地克隆了fork (使用GitHub for Window).我现在想2.0从Jim/abc本地对分支进行一些修改,然后他们提交并推送更改.
这样做的最佳方法是什么?
c# ×5
asp.net ×3
.net ×1
app-config ×1
attributes ×1
autofac ×1
branch ×1
database ×1
dbcontext ×1
dbml ×1
dictionary ×1
equality ×1
estimation ×1
gethashcode ×1
git ×1
git-checkout ×1
github ×1
indexing ×1
linq-to-sql ×1
nunit ×1
primary-key ×1
properties ×1
regex ×1
sql-server ×1
sqlmetal ×1