Entity framework 实体框架拒绝在新列上保存值
我刚刚更改了数据库,向表中添加了一个新列,并将其设置为外键。我们首先使用EF4数据库,所以我从数据库更新了模型,将我的新字段添加到DTO,在我尝试将数据保存到它之前,一切看起来都很好 新列名为DiaryEventId,由于它是FK,因此对象上还有一个名为DiaryEvent的虚拟属性。下面是代码的样子:Entity framework 实体框架拒绝在新列上保存值,entity-framework,Entity Framework,我刚刚更改了数据库,向表中添加了一个新列,并将其设置为外键。我们首先使用EF4数据库,所以我从数据库更新了模型,将我的新字段添加到DTO,在我尝试将数据保存到它之前,一切看起来都很好 新列名为DiaryEventId,由于它是FK,因此对象上还有一个名为DiaryEvent的虚拟属性。下面是代码的样子: public void SaveDocument(Guid CaseId, string diaryText, string ActivityType) { Gu
public void SaveDocument(Guid CaseId, string diaryText, string ActivityType)
{
Guid eventTypeId = RepositoryHelper.GetDiaryEventFromCache("Document Uploaded", _commonQueryContext);
//this wanders off and created a diary event object, adds it to
//the context and returns its ID
Guid diaryId = RepositoryHelper.AuditEvent(CaseId, diaryText, commonUpdateContext);
Entities.DocumentMetadata docData = new Entities.DocumentMetadata()
{
Id = Guid.NewGuid();,
ActivityType = activityType,
DiaryEventId = diaryId
};
_commonUpdateContext.DocumentMetadatas.Add(docData);
_commonUpdateContext.SaveChanges();
}
这可以很好地编译和运行,当您逐步执行它时,它似乎按照预期的方式运行-在对象上生成并设置diaryId。但在数据库中,它总是显示为null
我尝试在添加日记事件后调用SaveChanges(以确保密钥有连接的对象),并尝试将实际的DiaryEvent对象添加到虚拟属性,而不仅仅是ID,两者都具有相同的效果
当我观察SQL Profiler中的情况时,我可以看到INSERT语句完全忽略了我的新列—它根本没有列在INSERT列中
真的不知道发生了什么。有什么想法吗?在将对象添加到上下文后尝试修改它,就像测试一样
_commonUpdateContext.DocumentMetadatas.Add(docData);
Entities.DocumentMetadata docData = new Entities.DocumentMetadata()
{
Id = Guid.NewGuid();,
ActivityType = activityType,
DiaryEventId = diaryId
};
_commonUpdateContext.SaveChanges();
或者这可能是一个打字错误
Entities.DocumentMetadata docData = new Entities.DocumentMetadata()
{
Id = Guid.NewGuid();, <-------------typo?
Entities.DocumentMetadata docData=新实体.DocumentMetadata()
{
Id=Guid.NewGuid();,感谢您的帮助-按照建议进行修改没有效果。呵呵,不是这样的。这是我将实际代码修改成更简洁的代码来演示问题的原因。