1.加入Project对象模型服务器
public class Project { [Key] [MaxLength(32)] public string ID { get; set; } public string Name { get; set; } public int Order { get; set; } public ICollection<UserStory> Stories { get; set; } public ApplicationUser Creator { get; set; } public DateTime CreateTime { get; set; } public ApplicationUser Modifier { get; set; } public DateTime UpdateTime { get; set; } }
2.将Project关联到Storyapp
public ICollection<UserStory> Stories { get; set; }
3.添加projectcontrollerasync
遇到个bug:ui
warning CS0169: The field 'UserStoryController.mystr' is never used System.Data.SqlClient.SqlException: Column 'Project.ID' is not the same length or scale as referencing column 'UserStories.ProjectID' in foreign key 'FK_UserStories_Project_ProjectID'. Columns participating in a foreign key relationship must be defined wit h the same length and scale. Could not create constraint or index. See previous errors. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
这是因为系统生成的代码不能识别外键字段长度致使。3d
fix it对象
migrationBuilder.AddColumn<string>( name: "ProjectID", table: "UserStories", maxLength:32, nullable: true);
启动。一切正常blog
4. 下面来修改 Create Newip
删除 建立时间和更新时间,改由服务器赋值。ci
public async Task<IActionResult> Create(UserStoryViewModel userStoryViewModel) { if (ModelState.IsValid) { //mapping UserStory usNew = map.Map<UserStory>(userStoryViewModel); usNew.ID = Guid.NewGuid().ToString("N"); usNew.StatusCode = "Unstarted"; usNew.Creator = _userManager.FindByNameAsync(User.Identity.Name).Result; usNew.CreateTime = DateTime.Now; usNew.Order = _context.UserStories.Max(t => t.Order)+1; _context.UserStories.Add(usNew); await _context.SaveChangesAsync(); return RedirectToAction("Index"); } return View("OK"); }
details 和index删除 createtimeget
5.menu加入project
6.加入ViewStrories Action
<a asp-action="ViewStories" asp-route-id="@item.ID">View Stories</a>
7.修改StoryController加入解析id
完成。