我在EF 4.3.1上調用entities.savechanges()時出現錯誤。我的數據庫是一個sql ce v4商店,我正在編碼mvvm模式。我有我的上下文的本地版本,我發送到一個可觀察的集合和修改等。這工作正常,當我調用savechanges()時,數據庫中沒有行存在的對象保持良好。當我重新加載應用程序時,對象被填充到我的列表框中,但是如果我添加另一個對象並調用savechanges(),我會收到一個錯誤,指出重複值無法插入到唯一索引中。dbset.local更新數據庫:重複值無法插入唯一索引
從我的理解這意味着上下文嘗試我的實體保存到數據存儲,但它似乎是增加我的不變原始對象以及新的。我認爲這會讓他們孤身一人,因爲他們的狀態不變。
private void Load()
{
entities.Properties.Include("Images").Load();
PropertyList = new ObservableCollection<Property>();
PropertyList = entities.Properties.Local;
//Sort the list (based on previous session stored in database)
var sortList = PropertyList.OrderBy(x => x.Sort).ToList();
PropertyList.Clear();
sortList.ForEach(PropertyList.Add);
propertyView = CollectionViewSource.GetDefaultView(PropertyList);
if (propertyView != null) propertyView.CurrentChanged += new System.EventHandler(propertyView_CurrentChanged);
private void NewProperty()
{
try
{
if (PropertyList != null)
{
Property p = new Property()
{
ID = Guid.NewGuid(),
AgentName = "Firstname Lastname",
Address = "00 Blank Street",
AuctioneerName = "Firstname Lastname",
SaleTitle = "Insert a sales title",
Price = 0,
NextBid = 0,
CurrentImage = null,
Status = "Auction Pending",
QuadVis = false,
StatVis = false, //Pause button visibility
Sort = PropertyList.Count + 1,
};
PropertyList.Add(p);
SaveProperties();
}
private void SaveProperties()
{
try
{
foreach (var image in entities.Images.Local.ToList())
{
if (image.Property == null)
entities.Images.Remove(image);
}
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.Message);
}
entities.SaveChanges();
}
爲什麼我沒有看到這個!談論需要一套新的眼睛,當我回到這個下午時,會給它一個鏡頭。 – randomalbumtitle 2012-04-27 20:56:11