小编Bas*_*Bas的帖子

Ninject和DataContext处理

我正在使用Ninject从内核中检索我的DataContext,我想知道Ninject是否自动处理DataContext,或者他如何处理dispose()行为.根据自己的经验,我知道处理datacontext非常重要,每当你创建DataContext的直接对象时(如:new DataContext()),你应该使用using()块.

我的问题是:当我从内核中检索我的DataContext时,我是否仍然必须使用using()块?或者Ninject是否为我解决了这个问题?

c# datacontext dispose ninject ioc-container

22
推荐指数
2
解决办法
6357
查看次数

DataContext的例外情况

我一直在互联网上搜索,但我似乎无法找到它.DataContext可以抛出什么异常?或者更具体地说,DataContext.SubmitChanges()方法抛出了什么异常?

编辑
作为参考,这里列出了可能由L2S DataContext引发的已知异常:

  • SQLEXCEPTION
  • ChangeConflictException
  • DuplicateKeyException
  • ForeignKeyReferenceAlreadyHasValueException
  • OutOfMemoryException(当没有正确处理DataContext时)

c# datacontext exception-handling submitchanges linq-to-sql

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

创建大量对象时内存不足C#

我正在处理我的应用程序中的100万条记录,这是从MySQL数据库中检索的.为此,我使用Linq获取记录并使用.Skip()和.Take()一次处理250条记录.对于每个检索到的记录,我需要创建0到4个项目,然后将其添加到数据库中.因此,必须创建的项目总数平均约为200万.

IQueryable<Object> objectCollection = dataContext.Repository<Object>();
int amountToSkip = 0;
IList<Object> objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
while (objects.Count != 0)
        {
            using (dataContext = new LinqToSqlContext(new DataContext()))
            {
                foreach (Object objectRecord in objects)
                {
                    // Create 0 - 4 Random Items
                    for (int i = 0; i < Random.Next(0, 4); i++)
                    {
                        Item item = new Item();
                        item.Id = Guid.NewGuid();
                        item.Object = objectRecord.Id;
                        item.Created = DateTime.Now;
                        item.Changed = DateTime.Now;
                        dataContext.InsertOnSubmit(item);
                    }
                }
                dataContext.SubmitChanges();
            }
            amountToSkip += 250;
            objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
        }
Run Code Online (Sandbox Code Playgroud)

现在,在创建Items时出现问题.运行应用程序(甚至不使用dataContext …

c# memory object out-of-memory linq-to-sql

15
推荐指数
2
解决办法
7436
查看次数

部分类中接口实现的问题

我有一个关于L2S,Autogenerated DataContext和Partial Classes的使用问题的问题.我已经抽象了我的datacontext,并且对于我使用的每个表,我正在实现一个带接口的类.在下面的代码中,您可以看到我有接口和两个分部类.第一个类就是确保自动生成的datacontext中的类具有接口.另一个自动生成的类确保实现Interface的方法.

namespace PartialProject.objects
{

public interface Interface
{
    Interface Instance { get; }
}

//To make sure the autogenerated code inherits Interface
public partial class Class : Interface { }

//This is autogenerated
public partial class Class
{
    public Class Instance
    {
        get
        {
            return this.Instance;
        }
    }
}

}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是在autogenerated类中实现的方法会出现以下错误: - >属性'Instance'无法实现接口'PartialProject.objects.Interface'的属性.类型应为'PartialProjects.objects.Interface'.< -

知道如何解决这个错误吗?请记住,我无法在自动生成的代码中编辑任何内容.

提前致谢!

c# interface partial linq-to-sql

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

LINQ to SQL超时插入数百万条记录

我正在使用此解决方案在数据库中插入大约300万条记录.最终,当应用程序插入记录一段时间(我的上一次运行持续大约4小时)时,它会给出以下SqlException的超时:

"SqlExcepetion:Timeout已过期.在完成操作之前已经过了超时期限,或者服务器没有响应."

处理此异常的最佳方法是什么?有没有办法防止这种情况发生或者我应该抓住异常?

提前致谢!

c# database timeout exception linq-to-sql

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

单元测试什么都不返回,如何断言?

你会如何断言这样的代码?这样做的最佳方法是什么?

public void doSomething(int myProperty){
    if (myProperty == 0) return;
    // If myProperty is not zero, do something in the method
}
Run Code Online (Sandbox Code Playgroud)

c# unit-testing

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

单元测试和动机这样做

我目前正在单元测试一个不是很好地支持单元测试的应用程序,很多依赖项,重构和构建应用程序的开发人员在开始开发时没有想到单元测试.我的工作是进行单元测试研究,对应用程序进行单元测试,并将单元测试纳入组织.
当我正在处理应用程序并编写单元测试时,有时候很难保持良好的动机并为代码的困难部分编写好的测试.

现在我的问题是:
1.你怎么能保持自己的积极性来编写好的单元测试?(对于遗留代码)
2.激励您的同事编写单元测试是否重要?
3.作为雇主,您如何让您的员工积极参与编写良好的单元测试?

unit-testing

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