我對這個EF相當陌生,但我認爲我正在取得進展。無論如何,它似乎我不知道如何更新對象是RELATED由一個外鍵。ASP.NET C#實體框架 - 如何正確更新外鍵?
我DbRelation是:
而且我試圖更新一個成員LANGUAGEID,這裏是我調用上下文:
public class ManagerBase
{
private static NoxonEntities _entities = null;
public NoxonEntities Entities
{
get
{
if (_entities == null)
_entities = new NoxonEntities();
return _entities;
}
}
}
有很多事情我都試過了。這裏是一個:
1)
MemberManager currentMemberManager = new MemberManager();
var Mem = currentMemberManager.MyEntities.Member.SingleOrDefault(c => c.Id == 2);
var Lang = currentLanguageManager.Entities.Language.SingleOrDefault(c => c.Id == 1);
Mem.Language = Lang;
//Or
Mem.LanguageId = Lang.Id;
currentMemberManager.Save(Mem);
在appreach 1,我得到這樣
The changes to the database were committed successfully, but an error occurred while updating the object context. The ObjectContext might be in an inconsistent state. Inner exception message: A referential integrity constraint violation occurred: The property values that define the referential constraints are not consistent between principal and dependent objects in the relationship.
2錯誤)
//Managers uses ManagerBase class as a Base class
MemberManager currentMemberManager = new MemberManager();
currentMemberManager.Save(Globals.CurrentMember.Id, Globals.CurrentLanguage.Id);
//These Global objects coming from a Http Session
//You may also say not to keep whole member object in session which I'll not after I figure this out
Here is my SAVE method and where I have the actual problem:
public void Save(Member entity)
{
var Data = base.Entities.Member.First(c => c.Id == entity.Id);
if (Data != null)
{
Data = entity;
base.Entities.SaveChanges();
}
}
}
在appreach 1,我得到一個錯誤在EF模型中的代碼edmx文件
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 LanguageId
{
get
{
return _LanguageId;
}
set
{
OnLanguageIdChanging(value);
ReportPropertyChanging("LanguageId");
_LanguageId = StructuralObject.SetValidValue(value);
ReportPropertyChanged("LanguageId");
OnLanguageIdChanged();
}
}
和錯誤是
Object reference not set to an instance of an object.
顯然我在與EF走錯了路。
你能幫我,並顯示如何正確更新關係Id(ForeignKeyId)?
非常感謝。
靜態數據上下文是一個很大很大的大大不。可能不是你的錯誤,但我想指出這一點。 – Arran
你似乎有兩個經理......這是否意味着你有兩個上下文。如果是這種情況,則不能混合來自兩個上下文的實體 – tschmit007
謝謝Arran指出了這一點。 –