저는 약 1 주일 동안이 문제를 해결하기 위해 노력해 왔으며 온라인으로 사방을 보았을뿐 솔루션을 찾지 못하는 것 같습니다. 저는 C#과 .NET에 익숙하지 않아서 제가하는 모든 것을 완전히 이해하지 못합니다. 기본적으로 나는 프로젝트 관리 애플 리케이션을 구축하고있다. 응용 프로그램의 각 프로젝트에는 각 상태를 완료해야하는 미래 날짜가 표시되는 Projected Timeline이 있습니다. 프로젝트와 상태간에 One-To-Zero-or-One 관계를 구성하려고합니다.ASP.NET MVC에서 일대일 관계를 구성하려고합니까?
프로젝트가 생성 될 때마다 나중에 사용할 계획 타임 라인이 만들어집니다.
문제는 내가 새 프로젝트를 만들 때마다 상태 정보가 데이터베이스에 표시되지 않는다는 것입니다. 내 데이터베이스에는 두 개의 별도 테이블이 있는데 하나는 프로젝트 용이고 다른 하나는 상태 용입니다. 그러나 프로젝트가 생성 될 때마다 상태 행은 채워지지 않습니다. 누군가가 올바른 방향으로 나를 가리키고 내가 무엇을 잘못하고 있는지 설명 할 수 있습니까? 여기
여기public class Project
{
public Project()
{
Status Status = new Status();
}
[Key]
public int ProjectID { get; set; }
public string ProjectTitle { get; set; }
public virtual Status Status { get; set; }
}
}
내 상태 모델
public class Status
{
public Status()
{
GenerateTimeline();
}
[Key,ForeignKey("Project")]
public int ProjectID { get; set; }
public virtual Project Project { get; set; }
public DateTime CreatedDate { get; private set; }
public DateTime TimeUntilConsultation { get; private set; }
public DateTime TimeUntilChecklist { get; private set; }
public DateTime TimeUntilFirstDesign { get; private set; }
public void GenerateTimeline()
{
CreatedDate = DateTime.Now.Date;
TimeUntilConsultation = CreatedDate.AddBusinessDays(10);
TimeUntilChecklist = CreatedDate.AddBusinessDays(20);
TimeUntilFirstDesign = CreatedDate.AddBusinessDays(34);
}
}
입니다 그리고 여기 내 데이터베이스 컨텍스트
public class TestDBContextThree : DbContext
{
public TestDBContextThree() : base("TestDBContextThree")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<TestDBContextThree>());
}
public DbSet<Project> Projects { get; set; }
public DbSet<Status> Statuses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Project>().HasRequired(u => u.Status);
}
}
되고 여기에 새를 만드는 내 컨트롤러 내 프로젝트 모델입니다 프로젝트
// POST: Projects/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ProjectID,ProjectTitle,SelectedStatus")] Project project, Status Status)
{
if (ModelState.IsValid)
{
db.Statuses.Add(Status);
db.Projects.Add(project);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(project);
}
새 프로젝트를 저장하는 코드는 어디에 있습니까? 저장중인 엔티티에 유효한 상태를 설정하고 있습니까? – Shyju
나는 그것과 관련이있을 것이라고 생각했다. 내 대답을 편집하십시오. –