ASP .NET MVC의 응용 프로그램에서 프로 시저 삽입에 문제가 있습니다. 나는 나의 환경을 기술하고 나의 문제를 설명 할 것이다.탐색 속성이있는 새 엔터티를 만들 때 오류가 발생했습니다. Entity Framework
나는이 개 모델 클래스가 : 프로젝트 및 작업
프로젝트
[Table("Project")]
public class Project
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ProjectID { get; set; }
[Required(ErrorMessage = "Name project required")]
[StringLength(300, MinimumLength = 1)]
[DisplayName("Name of Project")]
public string NameProject { get; set; }
//Other properties...
public Project()
{
Tasks = new HashSet<Task>();
}
public virtual ICollection<Task> Tasks { get; set; }
}
TASK
[Table("Task")]
public class Task
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int TaskID { get; set; }
[Required(ErrorMessage = "Task Name required")]
[StringLength(300, MinimumLength = 1)]
public string TaskName { get; set; }
public virtual Project Project { get; set; }
}
을 내가 dbContext를 관리하는 코드를 삽입 할 곳은 윈도우 작업 관리자입니다 . 이것은 createNewTask 함수입니다.
public void createTask(Task task,int projectID)
{
Project pr = db.Project.Find(projectID);
task.Project = pr;
db.Task.Add(task);
db.SaveChanges();
}
그리고 여기 내 데이터베이스에서 스냅 샷입니다 :
그리고 문제는 : 나는 새 작업을 삽입하려고하면
, 시스템은 나에게 줄 오류 : * 엔티티 'Task'*의 'Project_ProjectID'열에 null 값을 추가 할 수 없습니다.
그러나 나는 이것을 이해하지 못한다 !! 내가 응용 프로그램을 디버깅 할 때 'int projectID'변수가 올바르다는 것을 알 수 있으며 'Project pr = db.Project.Find (projectID)'줄이 잘 작동하지만 ''에 도착하면 SaveChanges() '... 추락했습니다.
누구든지 나를 도와 줄 수 있습니까?
안녕하세요! 도움을 주셔서 감사합니다,하지만이 작동하지 않습니다. 프로젝트에서 작업 목록에 작업을 추가 할 것을 제안합니다. 하지만 'ProjectId'는 예외가 나와있는 열이 아니기 때문에 다른 것은 작동하지 않습니다. –
이제 알았습니다. 이 게시물을 통해 CodeFirst http://msdn.microsoft.com/en-us/data/hh134698.aspx의 관계를 이해하는 것이 좋습니다. 내 문제는 modelBuilder에서 유창한 API 구성을 추가해야한다는 것이 었습니다. 고마워요 khnumdev –