1

Nerd Dinner 응용 프로그램을 통해 작업했습니다. 내가 처음 Entity Framework 4.1 코드를 사용하고부모 개체 및 자식 개체를 삽입하기 전에 자식 개체 추가

NerdIdentity nerd = (NerdIdentity)User.Identity; 
dinner.HostedById = nerd.Name; 
dinner.HostedBy = nerd.FriendlyName; 

RSVP rsvp = new RSVP(); 
rsvp.AttendeeNameId = nerd.Name; 
rsvp.AttendeeName = nerd.FriendlyName; 
dinner.RSVPs.Add(rsvp); 

dinnerRepository.Add(dinner); 
dinnerRepository.Save(); 

: 작업을 만들기 방법들은 다음과 같은 코드가 있습니다. 나는 다음을 수행 내 서비스 계층에서

public class GrantApplication 
{ 
    public int Id { get; set; } 
    // Other properties 
    public virtual ICollection<AuditEntry> AuditEntries { get; set; } 
} 

, 그것을 무엇 얼간이 저녁 식사와 같은 :

public void Insert(GrantApplication grantApplication) 
{ 
    // Add audit entry 
    grantApplication.AuditEntries.Add(new AuditEntry 
    { 
     NewValue = grantApplication.GrantApplicationStateId, 
     AuditDate = currentDateTime, 
     EmployeeNumber = submitterEmployeeNumber 
    }); 

    // Insert the new grant application 
    grantApplicationRepository.Insert(grantApplication); 
} 

내 AuditEntry 클래스 :

public class AuditEntry 
{ 
    public int Id { get; set; } 
    public int OldValue { get; set; } 
    public int NewValue { get; set; } 
    public DateTime AuditDate { get; set; } 
    public string EmployeeNumber { get; set; } 
} 
여기

GrantApplication 클래스

내 컨텍스트 클래스 :

public class HbfContext : DbContext 
{ 
    public DbSet<Bank> Banks { get; set; } 
    public DbSet<AccountType> AccountTypes { get; set; } 
    public DbSet<GrantApplication> GrantApplications { get; set; } 
    public DbSet<AuditEntry> AuditEntries { get; set; } 

    protected override void OnModelCreating(DbModelBuilder dbModelBuilder) 
    { 
    } 
} 

grantApplication.AuditEntries가 null이므로 감사 항목 객체를 추가 할 수 없다는 오류가 발생합니다. 내 이유는 null이지만 저녁 식사 .RSVP는 RSVP 개체를 추가하려고하면 null이 아닙니다. 내가 어떻게 고칠 수 있니?

HbfContext에 AuditEntries를 추가해야합니까? 나는 그것을 자신의 것으로 사용하지 않을 것이라는 의미입니다. GrantApplication이 편집 될 때만 사용됩니다.

내가 얼간이 저녁 식사의 이전 버전을 사용해야하지만,이 같은 모양 만들기의 나 무엇

UPDATE :

[HttpPost, Authorize] 
public ActionResult Create(Dinner dinner) 
{ 
    if (ModelState.IsValid) 
    { 
     NerdIdentity nerd = (NerdIdentity)User.Identity; 
     dinner.HostedById = nerd.Name; 
     dinner.HostedBy = nerd.FriendlyName; 

     RSVP rsvp = new RSVP(); 
     rsvp.AttendeeNameId = nerd.Name; 
     rsvp.AttendeeName = nerd.FriendlyName; 
     dinner.RSVPs.Add(rsvp); 

     dinnerRepository.Add(dinner); 
     dinnerRepository.Save(); 

     return RedirectToAction("Details", new { id=dinner.DinnerID }); 
    } 

    return View(dinner); 
} 

답변

1

음을 NerdDinner DinnersController.Create includes a line of code which you didn't show 때문에?

  dinner.RSVPs = new List<RSVP>(); // why is this not in your example? 
      dinner.RSVPs.Add(rsvp); 

내가 HbfContext에 AuditEntries를 추가해야합니까?

예. 음, EF 모델에 어떤 방식 으로든 추가해야합니다. 이것이 그 방법 중 하나입니다. OnModelCreating의 코드를 사용하여 작업을 수행 할 수도 있습니다.

+0

아마도 Nerd Dinner의 새로운 버전 일 것이지만 원래 게시물을 업데이트했습니다. 그냥 가서 목록을 만들어 보겠습니다. –

관련 문제