【发布时间】:2011-10-19 23:08:11
【问题描述】:
我完成了Nerd Dinner 应用程序。在 Create 操作方法中,它们具有以下代码:
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();
我首先使用Entity Framework 4.1 代码。
这是我的GrantApplication 课程:
public class GrantApplication
{
public int Id { get; set; }
// Other properties
public virtual ICollection<AuditEntry> AuditEntries { get; set; }
}
在我的服务层中,我执行以下操作,与 Nerd Dinner 所做的相同:
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; }
}
我的上下文类:
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,因此它无法添加审核条目对象。为什么我的为空,但是当它尝试添加 RSVP 对象时,dinner.RSVPs 不为空?我该如何解决?
我需要将 AuditEntries 添加到 HbfContext 吗?我的意思是我不会单独使用它。只有在编辑 GrantApplication 时才会使用它。
更新
我必须使用旧版本的 Nerd Dinner,但这是我的 Create 的样子:
[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);
}
【问题讨论】:
标签: entity-framework entity-framework-4 ado.net entity-framework-4.1 ado.net-entity-data-model