我试图在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) 我正在使用实体框架代码优先.我有一个表不会超过100行,我想使用数据类型byte(tinyint在SQL Server中)作为主键.
这是我到目前为止:
[Key]
public byte Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
问题是当Entity Framework创建数据库时,它没有设置允许行在插入时自动递增的标识规范属性.
如果我将数据类型更改为Int16(smallint在SQL Server中)一切都很完美.
有没有办法告诉实体框架设置自动增量属性,或者一个字节不能用作实体框架代码优先的主键?
我有一个工作正常的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)