.NET MVC 웹 사이트를 만들려고하고 있는데 엔티티 프레임 워크를 통해 데이터베이스의 관련 테이블을로드하고 저장하는 데 문제가 있습니다.Entity Framework를 사용하여 적절한 탐색 속성을 설정하는 방법은 무엇입니까?
1) 한 테이블에서 관련 엔터티에 액세스하려고하면 내 탐색 속성이 비어있는 것처럼 보입니다.
public class Table1 {
public int Table1ID { get; set; }
public string Name { get; set; }
[ForeignKey("Table2")]
public int Table2ID { get; set; }
[ForeignKey("Table2ID")]
public virtual Table2 Table2 { get; set; }
}
public class Table2 {
public int Table2ID { get; set; }
public string Name { get; set; }
public virtual Table1 Table1 { get; set; }
}
내 EF 컨텍스트 클래스에서이 같은 내 매핑이 :
이public class EFDbContext : DbContext {
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Table2>().HasOptional(u => u.Table1).WithRequired().WillCascadeOnDelete(true);
}
}
내 컨트롤러에서 내가 원하는 표 2의 인스턴스를 가져오고 내보기로 보내 :에서
public ViewResult Edit(int productId) {
Table2 Table2Instance = repository.Table2.FirstOrDefault(p => p.Table2ID == productId);
return View(Table2Instance);
}
내보기 나는 Table2Instance Table1 관계가 있는지 여부에 따라이 작업을 수행 할 필요가 있습니다.이 같은 시도 :
@model Entities.Table2
@if (Model.Table1 == null && Model.Table2ID != 0){
//Do this
}else if (Model.Table1 != null && Model.Table2ID != 0) {
//Do that
}
하지만 데이터베이스에 관계가 있어도 항상 Model.Table1을 null로 표시하므로 내 탐색 속성이 제대로 작동하지 않는 것 같습니다. 이 탐색 속성은 어떻게 설정해야합니까?
2) Table1ID를 매번 0으로 저장하려고 시도하기 때문에 context.Table1.Add (Table1Instance)와 context.SaveChanges()를 사용하여 새 Table1 속성을 저장하려고하면 오류가 발생하며 증가하지 않습니다 ?
나는 그것이 강력한 입력 한도'System.Data.Entity를 사용하여 필요 여기 예제를 포함하는 것이 주목할 가치가 있다고 생각;'. –
컨트롤러에서, System.Data.Entity를 사용하고 있어도, 내 동작 메서드 내에서 .Include를 사용할 때 오류가 발생합니다. 편집? IEnumerable에 포함 정의에 대한 내용이 없습니다. –
매우 이상하게도 System.Data.Entity 네임 스페이스에있는 DbExtensions 클래스의 확장 메서드입니다. 저장소가 DbContext를 상속하는 클래스의 객체입니까?Table2 및 IQueryable입니까? 파일에 DbExtensions를 입력하면 기존 클래스로 인식됩니까? –
JotaBe