小编hoa*_*key的帖子

在实体框架中处置对象上下文4

我有一个实体类,它是从我的数据库模型自动生成的.这个类继承了ObjectContext,它继承了IDisposable.

我创建了一个存储库,其中包含各种方法,这些方法使用实体对象的单个实例与数据库进行交互.

自动生成的类

public partial class DevEntities : ObjectContext
{
    public const string ConnectionString = "name=DevEntities";
    public const string ContainerName = "DevEntities";
Run Code Online (Sandbox Code Playgroud)

存储库类

DevEntities db = new DevEntities();

        public Customer GetCustomerByID(int id)
    {
        var customers = db.Customers.FirstOrDefault(c => c.CustomerId == id);

        return customers;
    }

    public Customer GetCustomerByPasswordUsername(string email, string password)
    {
        var customers = db.Customers.FirstOrDefault(c => c.Email == email && c.Password == password);

        return customers;
    }
Run Code Online (Sandbox Code Playgroud)

从中您可以看到我对db实例进行了多次引用.我的问题是,我最好在每个方法中实例化一个新的DevEntity,从而能够实现using语句,从而确保正确处理,或者我当前的实现是否正常?

c# idisposable repository-pattern entity-framework-4

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

使用Moq进行单元测试存储库

我对Moq完全不熟悉,到目前为止,我们刚刚完成了Pro asp.net框架中概述的示例.在书中,一些crud被放置在控制器中,例如通过id获取客户 - 可能是出于简洁的原因.我决定将这种类型的功能放在存储库中,只需在控制器中调用它,就像"customerRepository.GetCustomerByID(id);" 测试这样的东西的最佳方法是什么?我创建了以下单元测试,由于某种原因,它返回一个null Customer.

List<Customer> customer = new List<Customer>();

customer.Add(new Customer { CustomerId = 1, FirstName = "test", LastName = "wods", Sex = true });
mockRepos = new Moq.Mock<ICustomerRepository>();
mockRepos.Setup(x => x.Customers).Returns(customer.AsQueryable());

CustomersController controller = new CustomersController(mockRepos.Object);

//Act
ViewResult results = controller.Edit(1);

var custRendered = (Customer)results.ViewData.Model;
Assert.AreEqual(2, custRendered.CustomerId);
Assert.AreEqual("test", custRendered.FirstName);
Run Code Online (Sandbox Code Playgroud)

和控制器

public ViewResult Edit(int id)
{
    Customer customer = customerRepository.GetCustomerByID(id);           

    return View(customer); //this just returns null??
}
Run Code Online (Sandbox Code Playgroud)

我想我很傻,但任何帮助都会受到更多的赞赏.

asp.net-mvc unit-testing moq repository

7
推荐指数
1
解决办法
2749
查看次数

使用RemoveAll从列表中删除项目

我正在尝试使用lambda表达式根据该对象中的值从列表中删除某个对象.这是我的lambda:

ChartAttributes.ToList().RemoveAll(a => a.AttributeValue.Contains("PILOT"));
Run Code Online (Sandbox Code Playgroud)

这是ChartAttributes列表

IList<IChartAttribute> ChartAttributes 
Run Code Online (Sandbox Code Playgroud)

这是上面列表中包含的ChartAttribute对象

    public virtual string AttributeKey { get; set; }       
    public virtual string AttributeValue { get; set; }        
    public virtual int ChartAttributeId { get; set; }        
    public virtual int ChartSpecificationId { get; set; }
Run Code Online (Sandbox Code Playgroud)

有一个图表属性,其AttributeKey设置为"PILOT".但这永远不会被删除.我究竟做错了什么?

谢谢

c# lambda

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

MS单元测试示例

我正在努力让我的头脑进行单元测试.我一直在关注Nerd晚餐和专业asp.net MVC框架的例子,但是一旦我尝试自己很快就会卡住.作为测试,我尝试构建一个仅使用登录信息的验证类 - usename和password从存储库返回用户.我已经使用了这个例子,因为很容易想象一个人可能会执行哪些测试:Is_Password_Valid,Is_Username_Valid等.

我花了很长时间试图让我的头脑得到这个.任何人都可以举例说明他们如何将其作为单元测试吗?我想,一旦我破解了这个,我就会离开.

//Arrange
string email = "test@test.com";
string password = "test";

//Arrange
List<Customer> customer = new List<Customer>();

customer.Add(new Customer { CustomerId = 1, Email = email, Password = "best", FirstName = "test", LastName = "wods", Sex = true });
mockRepos = new Moq.Mock<ICustomerRepository>();
mockRepos.Setup(x => x.GetCustomerByPasswordUsername(email, password)).Returns(customer.First());
Authenticate auth = new Authenticate(mockRepos.Object);

//Act
var result = auth.Login(email, password);

//Assert
//this is where I start to become unstuck??????
Run Code Online (Sandbox Code Playgroud)

unit-testing moq

4
推荐指数
1
解决办法
6881
查看次数

抛出异常有什么意义?

我正在用c#编写一个登录类,我正在努力为空密码,密码不足的密码字符等抛出异常.突然发生的事情是 - 我怎么处理这些异常?他们是谁/他们是谁?无论我是否处理异常,该应用程序仍然会失败.是其他开发者的例外,客户!?

c# exception-handling

4
推荐指数
2
解决办法
1189
查看次数

依赖注入的对象处理

我创建了一个我想在页面后面的代码中使用的存储库类.我在代码隐藏页面中使用构造函数注入来实例化存储库.

存储库类:

BritanniaPremierEntities PBEntities = new BritanniaPremierEntities();

public IQueryable<TradeRoutes> GetRoutes()
{
    var routes = PBEntities.TradeRoutes.OrderBy(c => c.ConsignmentDate);        

    return routes;
}

public IQueryable<TradeRoutes> GetExpiredRoutes()
{
    var routes = PBEntities.TradeRoutes.Where(
        c => c.ConsignmentDate <= System.DateTime.Now);

    return routes;
}
Run Code Online (Sandbox Code Playgroud)

代码页面背后

private IRepository repos;

public Admin_TradeRoutesAdmin()
    : this(new Repository()) 
{
}

public Admin_TradeRoutesAdmin(IRepository repos)
{
    this.repos = repos;
}

public IQueryable GetTradeRoutes()
{        
    // call repository method
    return repos.GetRoutes();
}
Run Code Online (Sandbox Code Playgroud)

这是我有点困惑的地方.我应该如何确保存储库正确处理?例如,我无法使用代码隐藏页面中的语句来包装存储库调用,从而在存储库中使用dispose方法.

c# dependency-injection idisposable repository-pattern

4
推荐指数
1
解决办法
2651
查看次数

打开XML SDK - 图像未在Excel中显示

我能够成功创建电子表格,而且我似乎已经通过代码添加了图像,问题是当我打开电子表格时,没有图像.这是我的代码:

    public static void CreateSpreadsheetWorkbook(string filepath)
    {
        SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

        WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
        workbookpart.Workbook = new Workbook();

        WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
        worksheetPart.Worksheet = new Worksheet(new SheetData());

        Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());
        Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
        sheets.Append(sheet);

        string sImagePath = @"C:\temp\install_button.png";
        DrawingsPart drawingsPart = worksheetPart.AddNewPart<DrawingsPart>();

        ImagePart imagePart = drawingsPart.AddImagePart(ImagePartType.Png, worksheetPart.GetIdOfPart(drawingsPart));
        using (FileStream stream = new FileStream(sImagePath, FileMode.Open))
        {
            imagePart.FeedData(stream);
        }

        workbookpart.Workbook.Save();
        spreadsheetDocument.Close();
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

斯图

openxml-sdk

4
推荐指数
1
解决办法
3518
查看次数

将IList <string>转换为List <string>()

我有一个函数IList<string> someVariable作为参数.我想将其转换为列表,以便我可以按字母顺序对值进行排序.

我该如何实现这一目标?

c# ilist list

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

替代在where子句中使用局部变量

我有一个查询,其中有一个使用许多局部变量构建的where子句,但这很慢.下面是一个粗略的例子,因为我目前无法访问查询:

declare @a varchar(50), @b varchar(50), @c varchar(50)
set @a = '%'
set @b = 'foo'
set @c = '%bar'
Run Code Online (Sandbox Code Playgroud)

我的where子句是什么样的

where a = @a and b = @b and c =@c
Run Code Online (Sandbox Code Playgroud)

这需要大约1分钟才能运行.但是,如果我直接引用where子句中的值,例如:

where a = '%' and b = 'foo' and '%bar'
Run Code Online (Sandbox Code Playgroud)

大约需要5秒钟.

所以我的问题是,有没有更好的方法来构建我的where子句?需要注意的一件重要事情.where子句中使用了大约10个局部变量,但大多数都设置为默认值%

提前致谢

sql sql-server-2008

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

在代码中触发OnSelectedIndexChanged事件

除了从下拉列表中触发此事件之外,我还希望能够从我的代码中触发它.这有可能吗?如果可以的话怎么样?

谢谢

斯图

c# asp.net events

0
推荐指数
1
解决办法
63
查看次数