我有一个带有 ria 项目的 silverlight mvvm。我有一个用户界面,管理员用户可以在其中输入信息以创建新的工作订单。但是,我无法调用数据库并向表中添加新记录。我没有 UI 的代码隐藏,控件通过命令和命令参数绑定到模型。因此,当用户单击“添加新工作”时,它会出现在此处,
public class EditJobViewModel : ViewModelBase
{
private Job _job;
public Job CurrentJob
{
get { return _job; }
set
{
_job = value;
OnPropertyChanged("CurrentJob");
}
}
public ICommand NewJob
{
get
{
return new DelegateCommand(BeginNewJob, (o) => true);
}
}
public void BeginNewJob(object o)
{
_job = new Job();
//_job.JobNumber = _job.JobID.ToString();
_job.AssignedTo = App.userID;
_job.AddedBy = App.userID;
_job.FileTypeJob = "PDF";
_job.AddedTS = DateTime.Now;
_job.OpenDate = DateTime.Now;
BeginSave(o);
}
}
我遇到问题的地方是在“工作”表中创建新记录。在我的断点上,它返回它需要的所有列,而不是一个新的“JobID”,它是我的主键。这就是我试图创造新记录的方式。
public void BeginSave(object o)
{
if (!IsDesignTime)
{
try
{
if (CurrentJob.EntityState == EntityState.New)
{
CurrentJob.AddedBy = App.userID;
CurrentJob.AddedTS = DateTime.Now;
}
CurrentJob.UpdatedBy = App.userID;
CurrentJob.UpdatedTS = DateTime.Now;
// This is here because of a bug in infragistics grid/Entity Framework
foreach (JobFileType ft in CurrentJob.JobFileTypes)
{
if (ft.EntityState != EntityState.Unmodified)
(ft as IEditableObject).EndEdit();
}
foreach (JobTag tag in CurrentJob.JobTags)
{
if (tag.EntityState != EntityState.Unmodified)
(tag as IEditableObject).EndEdit();
}
//(CurrentJob as IEditableObject).EndEdit();
SubmitOperation s = _context.SubmitChanges();
if (s.HasError)
{ }
}
catch (Exception ex)
{ }
}
}
除了它永远不会命中 EntityState.new。这就是我想尝试的方式。我想有一种方法可以通过“BeginNewJob”命令来完成,但通常无法找到创建新 JobID 或记录的方法。数据库已经有 10000 条记录并且有多个用户创建作业,所以我需要一种方法来获取创建的最后一个作业 (getMaxID()??) 并适当地增加,当场创建一个新作业。