我以前从来没有真正做过单元测试,而且我在第一次测试时偶然发现并绊倒了.问题是_repository.Golfers.Count();始终表明它DbSet是空的.
我的测试很简单,我只想添加一个新的高尔夫球手
[TestClass]
public class GolferUnitTest //: GolferTestBase
{
public MockGolfEntities _repository;
[TestMethod]
public void ShouldAddNewGolferToRepository()
{
_repository = new MockGolfEntities();
_repository.Golfers = new InMemoryDbSet<Golfer>(CreateFakeGolfers());
int count = _repository.Golfers.Count();
_repository.Golfers.Add(_newGolfer);
Assert.IsTrue(_repository.Golfers.Count() == count + 1);
}
private Golfer _newGolfer = new Golfer()
{
Index = 8,
Guid = System.Guid.NewGuid(),
FirstName = "Jonas",
LastName = "Persson"
};
public static IEnumerable<Golfer> CreateFakeGolfers()
{
yield return new Golfer()
{
Index = 1,
FirstName = "Bill",
LastName = "Clinton",
Guid …Run Code Online (Sandbox Code Playgroud) 如何Skip()与Take()实体框架中工作调用存储过程的时候?我无法访问sql profiler进行检查,但我想确保优化服务器之间发送的数据量.
假设我有以下代码,其中MyStoredProcedure返回1000+行.
List<MyComplex_Result> myComplexList = db.MyStoredProcedure()
.Skip(50)
.Take(10);
Run Code Online (Sandbox Code Playgroud)
将Take(10)确保只有那些行的10从数据库服务器发送到Web服务器,或将全部1000+行发送(虽然只有10会被发送到客户端)?
我有一个失控的请求控制器,我想在几个控制器上划分操作,同时保持一个干净的URL.我正在尝试路由,但没有成功.我已经阅读了一些关于路由的示例和教程,但是,虽然我理解这些示例,但似乎没有什么适用于我的情况,我觉得不是更明智.我想要的是Requests/Approval在我的ApprovalController而不是我的RequestController上处理URL ,所以我写了以下内容.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Approval",
"Request/{controller}/{action}",
new { controller = "Approval", action="Index", id = "" }
);
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.为什么?我的视图中有一个名为Approval的文件夹,在那里我有一个名为的文件Index.cshtml.我该如何编写MapRoute代码?
编辑
我添加了我所有的路线