从控件的外部,是否可以找出Page LifeCycle(Init,Load,PreRender等)的哪个阶段,特定控件或页面是什么?
例如,在伪代码中:
if myControl.CurrentLifeCycle == Lifecycle.Init
{ do something }
Run Code Online (Sandbox Code Playgroud) 而不是手动必须绑定每个类,建议使用哪些方法和模式来自动设置绑定?
例如,绝大多数绑定看起来像这样:
Bind<ICustomerRepository>.To<CustomerRepository>();
Run Code Online (Sandbox Code Playgroud)
一旦模块变大,你就可以得到100个看起来完全相同的绑定.这可以自动化吗?
这里有人经常使用Spec#吗?在我开始使用它之前,我想知道它是否足够稳定和强大.看起来语法正在影响c#4.0,这有望在4.0发布后更容易升级.思考?
嗨,我试图了解XSD,XML和命名空间,但我不能按照我希望的方式工作.
我有一个XSD,目前,这样开始:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com">
<xs:import namespace="http://www.example.com" schemaLocation="Include.xsd" />
Run Code Online (Sandbox Code Playgroud)
如您所见,它会导入另一个xsd文件,该文件的开头如下:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
targetNamespace="http://www.example.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com">
Run Code Online (Sandbox Code Playgroud)
然后我有一些基于这个模式的xml文档:
<foobar>
<whatever>....
Run Code Online (Sandbox Code Playgroud)
基本上我不关心命名空间是什么,我只是想让这件事工作.以前我没有使用任何命名空间,但似乎我必须使用它们才能将一个XSD导入另一个.我不想做的是必须为我的xml文档中的所有元素提供前缀.
为了实现这一点,我需要在XSD和XML文档中的各种属性(targetNamespace,namespace,xmlns,elementFormDefault等)中使用哪些值组合?
目前,导入的XSD文档中定义的任何元素都需要XML中的命名空间限定.
我发现在我的代码中经常发生以下错误,并且想知道是否有人知道一些避免它的好策略.
想象一下这样的一个类:
public class Quote
{
public decimal InterestRate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在某些时候,我创建了一个利用利率的字符串,如下所示:
public string PrintQuote(Quote quote)
{
return "The interest rate is " + quote.InterestRate;
}
Run Code Online (Sandbox Code Playgroud)
现在想象一下,我将InterestRate属性从小数重构为它自己的类:
public class Quote
{
public InterestRate InterestRate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
...但是说我忘了重写InterestRate类中的ToString方法.除非我仔细查找InterestRate属性的每个用法,否则我可能永远不会注意到它在某些时候被转换为字符串.编译器当然不会选择它.我唯一的救世主机会是通过整合测试.
下次我调用PrintQuote方法时,我会得到一个这样的字符串:
"利率为Business.Finance.InterestRate".
哎哟.如何避免这种情况?
我试图使用Linq-to-NHibernate获取以下SQL输出:
SELECT DISTINCT Name, at.Year FROM MyTable mt
INNER JOIN AnotherTable at ON at.Id = mt.AnotherTableId
Run Code Online (Sandbox Code Playgroud)
Name和Year属性将包含在一个新类中,因此C#代码将如下所示:
Session.Linq()
.Select(x => new FooBar { Name = x.Name, Year = x.AnotherTable.Year }))
.ToList();
Run Code Online (Sandbox Code Playgroud)
如何让DISTINCT关键字出现在sql查询中?
有没有遇到过这个?
升级到NHibernate 3.1后,我在运行NUnit测试用例时从NHibernate Validator收到以下异常:
System.NotSupportedException:动态程序集中不支持调用的成员.在NHibernate.Validator的NHibernate.Validator.Cfg.XmlMappingLoader.GetXmlMappingFor(Type type)的NHibernate.Validator.Cfg.XmlMappingLoader.AddResource(汇编汇编,String资源)的System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceStream(String name)处.在NHibernate.Validator的NHibernate.Validator.Engine.ClassValidator.InitValidator(Type clazz,IDictionary`2 nestedClassValidators)的NHibernate.Validator.Engine.JITClassMappingFactory.GetClassMapping(Type clazz,ValidatorMode模式)中的Engine.JITClassMappingFactory.GetExternalDefinitionFor(Type type).在NHibernate.Validator.Engine.ValidatorEngine.GetClassValidator(Type entityType)的NHibernate.Validator.Engine.StateFullClassValidatorFactory.GetRootValidator(Type type)中的Engine.ClassValidator..ctor(Type clazz,IConstraintValidatorFactory constraintValidatorFactory,IDictionary`2 childClassValidators,IClassValidatorFactory factory)at Niber的NHibernate.Validator.Engine.ValidatorEngine.GetElementOrNew(Type entityType)Hibernate.Validator.Engine.ValidatorEngine.InternalValidate(Object entity,Object [] activeTags)at NHibernate.Validator.Ealine.ValidatorEngine.Validate(Object entity,Object [] activeTags)at NHibernate.Validator.Event.ValidateEventListener.Validate(Object entity) ,EntityMode模式)NHibernate.Validator.Event.ValidatePreUpdateEventListener.OnPreUpdate(PreUpdateEvent事件),位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate\Action\EntityUpdateAction.cs中的NHibernate.Action.EntityUpdateAction.PreUpdate()中: NH中的NHibernate.Action.EntityUpdateAction.Execute()中的第200行:\ CSharp\NH\NH \nhibernate\src\NHibernate\Action\EntityUpdateAction.cs:第58行,位于NH的NHibernate.Engine.ActionQueue.Execute(IExecutable executable)中:\ CSharp\NH\NH \nhibernate\src\NHibernate\Engine\ActionQueue.cs:位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate \中的NHibernate.Engine.ActionQueue.ExecuteActions(IList列表)中的第136行Engine\ActionQueue.cs:位于d:\ CSharp\NH\NH \nhibern的NHibernate.Engine.ActionQueue.ExecuteActions()中的第126行 ate\src\NHibernate\Engine\ActionQueue.cs:位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate\Event\Default\AbstractFlushingEventListener中的NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource会话)的第170行. cs:第23行:NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent事件),位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate\Event\Default\DefaultFlushEventListener.cs:第19行,位于NHibernate.Impl.SessionImpl .FlT中的.Flush():CSharp\NH\NH \nhibernate\src\NHibernate\Impl\SessionImpl.cs:FooTest.cs中TestDataAccess.FooTest.TestFoo()的第1472行
正如您从堆栈跟踪中看到的那样,当刷新会话并且NHibernate Validator执行其操作时会发生错误.
更新我试过单步执行NH Validator代码,似乎在某些时候它试图验证实体的Castle代理,而不是底层实体本身.这就引起了麻烦.不知道该怎么办......
更新如果我使用LinFu ProxyFactoryFactory而不是Castle,问题就会消失.不幸的是,LinFu给了我其他问题所以我不想使用它.
我有一个包含许多缩略图(约100个)的网页.当您单击其中一个缩略图时,会创建一个模态弹出窗口,这实际上是iframe中的新网页.这个新网页包含1张大图.
当用户在所有100个缩略图在父页面上完成下载之前打开弹出窗口时,会出现问题.用户现在必须等待很长时间才能看到弹出窗口中的大图像,因为浏览器不知道要将这个新图像优先于它已经尝试检索的缩略图.
有关解决这个问题的任何想法?
我正在使用SQL Server 2008,它拒绝对我的索引执行搜索,该索引覆盖计算列.
我的表看起来像这样:
CREATE TABLE Person
{
Id uniqueidentifier NOT NULL,
InsertDate datetime NOT NULL,
PhoneNumber NULL,
PhoneNumberComparable AS (MakePhoneNumberComparable(PhoneNumber)) PERSISTED,
... etc...
}
Run Code Online (Sandbox Code Playgroud)
ID列上有一个聚簇主键索引,还有InsertDate列上的索引.
PhoneNumberComparable计算列上有一个索引,如下所示:
CREATE NONCLUSTERED INDEX IX_Person_PhoneNumberComparable ON Person
(
PhoneNumberComparable ASC
)
Run Code Online (Sandbox Code Playgroud)
索引都具有最新的统计信息.
我的查询如下所示:
SELECT TOP 20 * FROM Person
WHERE PhoneNumberComparable = @PhoneNumber
ORDER BY InsertDate DESC
Run Code Online (Sandbox Code Playgroud)
默认情况下,SQL Server决定使用InsertDate上的索引而不是PhoneNumberComparable上的索引,从而导致性能非常差.
如果我尝试强制使用电话号码索引,通过向查询添加WITH(INDEX = IX_Person_PhoneNumberComparable),SQL将执行扫描而不是搜索.
如果我尝试使用FORCESEEK查询提示,那么SQL Server会给我以下错误:
由于此查询中定义的提示,查询处理器无法生成查询计划.重新提交查询而不指定任何提示,也不使用SET FORCEPLAN.
所以基本上,由于某种原因,SQL Server拒绝寻求我的索引!为什么?
编辑
根据评论中的建议,我简化了查询,但问题仍然存在(执行主键扫描而不是搜索电话号码索引):
SELECT TOP 20 PhoneNumberComparable FROM Person
WHERE PhoneNumberComparable = @PhoneNumber
Run Code Online (Sandbox Code Playgroud) .net ×1
asp.net ×1
browser ×1
c# ×1
c#-4.0 ×1
html ×1
import ×1
javascript ×1
namespaces ×1
nhibernate ×1
ninject ×1
nlog ×1
spec# ×1
sql ×1
sql-server ×1
tostring ×1
xml ×1
xsd ×1