小编use*_*926的帖子

单元测试MVC 4 RedirectToAction

我试图在MVC 4 .Net 4.5中对我的控制器的重定向进行单元测试.这是一个例子:

    [TestMethod]
    public void Register_PassValidModel_RedirectToHomeIndexShouldBeTrue()
    {
        //Arrange
        var registerModel = new RegisterModel
        {
            Email = "validEmailAddress@domain.com",
            Password = "password"
        };

        //Assign
        var result = _controller.Register(registerModel) as RedirectToRouteResult;

        //Assert
        result.RouteValues["Action"].ShouldBeEqual("Index");
        result.RouteValues["Controller"].ShouldBeEqual("Home");
    }
Run Code Online (Sandbox Code Playgroud)

这是控制器:

    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
         if (ModelState.IsValid)
        {
            var userToRegister = new User { Email = model.Email, Password = model.Password };
            var service = new UserService(_userRepository);

            User user = service.RegisterUser(userToRegister);

            if (user.UserErrorMessages.Count != 0)
            {
                user.UserErrorMessages.ForEach(x => ModelState.AddModelError("", x));
                return View(model);
            }

            SetCookie(model.Email);

            return …
Run Code Online (Sandbox Code Playgroud)

unit-testing asp.net-mvc-4 asp.net-4.5

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

使用byte作为主键数据类型

我正在使用实体框架代码优先.我有一个表不会超过100行,我想使用数据类型byte(tinyint在SQL Server中)作为主键.

这是我到目前为止:

[Key]
public byte Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

问题是当Entity Framework创建数据库时,它没有设置允许行在插入时自动递增的标识规范属性.

如果我将数据类型更改为Int16(smallint在SQL Server中)一切都很完美.

有没有办法告诉实体框架设置自动增量属性,或者一个字节不能用作实体框架代码优先的主键?

.net c# sql-server entity-framework ef-code-first

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

Web应用程序错误:序列包含多个元素

我有一个工作正常的Web应用程序,但不再工作.它甚至适用于我的开发计算机(连接到本地数据库),但不适用于生产.所以在我的开发计算机上,我更改连接字符串以命中生产数据库,我得到错误:序列包含多个元素.

我认为它必须与数据库有关,但我不知道如何弄清楚它是什么,其中有近千行数据.

下面是获取数据的linq语句.关于如何解决这个问题的任何想法?

提前致谢

protected void lnqItems_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    DocksideValidationDataContext db = new DocksideValidationDataContext();

    DateTime startDate = (radStartDate.SelectedDate.HasValue)
        ? radStartDate.SelectedDate.Value
        : DateTime.Parse("1/1/1900");
    DateTime endDate = (radEndDate.SelectedDate.HasValue)
        ? radEndDate.SelectedDate.Value
        : DateTime.Parse("1/1/2500");
    int prevalNum = (txtSummaryFormNumber.Text.Trim() == "")
        ? -1
        : Convert.ToInt32(txtSummaryFormNumber.Text.Trim());

    e.Result = (from x in db.SummaryForms
                where (x.SummaryFormId == prevalNum
                    || (prevalNum == -1)
                    && (x.SampleDate >= startDate.Date)
                    && (x.SampleDate <= endDate.Date)
                    && (x.StateId == Convert.ToInt32(ddlState.SelectedValue)))
                orderby (x.SampleDate) descending
                select x).AsEnumerable()
                         .Select(x => new
                         {
                             x.SummaryFormId,
                             x.SampleDate,
                             DockName …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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