Tag: 规范

Mongodb NoRM和POCO

我正在用C#试验Mongodb和NoRM。 从我所读到的,在Mongodb中唯一标识文档的ObjectId是一种“特殊”Guid(在某种意义上是唯一的),但在其中有一些重要的部分允许更容易的排序和索引(时间戳,机器哈希) ,processId和增量)。 我想保持我的对象真的POCO与自动生成的Guid为Id所以没有像ObjectId这样的外部类型会阻止我迁移到另一种技术或者回到经典的Ado.net或Nhibernate的东西。 另一种选择是在POCO中使用Id作为字符串并使用ObjectId.NewObjectId().ToString() 它的最佳实践是什么?

使用负数组大小抛出OverflowException背后的基本原理?

编写完可以归结为以下内容的代码后: var size=-1; var arr=new byte[size]; 我很惊讶它抛出了一个OverflowException 。 OverflowException状态的文档: 在已检查上下文中的算术,转换或转换操作导致溢出时引发的exception。 我无法看到为这个exception提供的描述如何提供负的大小和数组长度,所以深入研究并发现这确实是指定的行为: 尺寸长度的计算值validation如下。 如果一个或多个值小于零,则抛出System.OverflowException,并且不执行进一步的步骤。 我想知道为什么选择了OverflowException。 如果你问我,那就太误导了。 我花了至少5分钟的调查时间(不计算我的思考)。 任何人都可以(根据我的想法)对这个特殊的设计决定有所了解吗?

MongoDB Norm查询嵌套对象

有没有人有一个如何使用NORM(C#)在MongoDB中查询嵌套/内部对象的示例? 例如,如果集合中的典型文档看起来像Order / OrderItems,我如何通过OrderItem.Quantity> 10查找特定的OrderItem。

当从finallys抛出exception时,不会评估Catch块

出现这个问题是因为以前在.NET 4.0中运行的代码在.NET 4.5中出现了未处理的exception,部分原因是try / finallys。 如果您需要详细信息,请阅读Microsoft connect 。 我用它作为这个例子的基础,所以它可能有助于引用。 代码 对于那些选择不阅读这个问题背后细节的人来说,这里可以快速了解发生这种情况的条件: using(var ms = new MemoryStream(encryptedData)) using(var cryptoStream = new CryptoStream(encryptedData, decryptor, CryptoStreamMode.Read)) using(var sr = new StreamReader(cryptoStream)) 这个问题是从CryptoStream的Dispose方法抛出exception(因为它们在using语句中,这些exception碰巧是从两个不同的finally块抛出的)。 当StreamReader调用cryptoStream.Dispose() ,将抛出CryptographicException 。 第二次cryptoStream.Dispose() ,在其using语句中,它抛出一个ArgumentNullException 下面的代码从上面提供的链接中删除了大部分不必要的代码,并将using语句展开到try / finallys中,以清楚地表明它们正在抛出finally块。 using System; using System.Security.Cryptography; namespace Sandbox { public class Program { public static void Main(string[] args) { try […]

不允许特定使用字符

我碰到了一个问题,我希望有人可以帮助我:) 我有一个TextBox,我想限制用户,这样他们就不能一个接一个地写多个\ 。 我用它来做文件夹。 例如: C\temp\test\ 现在我想阻止输入,如: C\temp\test\\\ 我试过四处寻找这个问题,但我找不到这样的东西,所以我希望有可能:) 我没有任何代码可以显示,但这是我的TextBox的代码: private void textBox1_TextChanged(object sender, EventArgs e) { try { Regex regex = new Regex(@”[^C^D^A^E^H^S^T^]”); MatchCollection matches = regex.Matches(textBox1.Text); if (matches.Count > 0) { MessageBox.Show(“Character niet toegestaan!”); textBox1.Text = “”; } clsOpslagMedium objOpslag; // definieert type object objOpslag = new clsOpslagMedium(); // creert opject in memory […]

使用NoRM在MongoDB中进行延迟加载

我有一个类似的模型:(简化) 题: public class Question { public string QuestionID { get; set; } public string Title { get; set; } public string Body { get; set; } public List Answers { get; set; } } 回答: public class Answer { public string QuestionID { get; set; } public string Body { get; set; } } […]

何时使用Ninject和MongoDB使用Singleton vs Transient vs Request

当我在global.cs文件中进行绑定时,我不太确定何时应该使用SingletonScope()vs TransientScope()vs RequestScope()。 我有一个例如我对MongoSession的调用(使用NoRM和mvcStarter项目http://mvcstarter.codeplex.com/ ),它设置为SingletonScope但是我创建了一个使用这个MongoSession对象的存储库来简化对Mongo的调用,例如,我有一个NewsRepository,它使用MongoSession从数据中获取我的新闻项。 作为一个例子,我有一个调用,它获取DisplayOnHome设置为true的新闻项目,并通过CreationDate获取最新项目。 这样的存储库应该是SingletonScope还是RequestScope会更合适? 我什么时候应该使用它们?为什么?

嵌套对象初始化器语法

Resharper刚给我建议了以下重构: // Constructor initializes InitializedProperty but // the UninitializedSubproperty is uninitialized. var myInstance = new MyClass(); myInstance.InitializedProperty.UninitializedSubproperty = new MyOtherClass(); // becomes var myInstance = new MyClass { InitializedProperty = { UninitializedSubproperty = new MyOtherClass() } }; 我以前从未见过这种对象初始化。 特别是我看不出来 InitializedProperty = { UninitializedSubproperty = new MyOtherClass() } 没有任何意义 – 它没有为InitializedProperty 分配任何东西。 是否在任何地方指定了此行