2016-04-24 53 views
1

我有一個奇怪的事情與EF 6:實體框架更新SQL請求錯誤

我嘗試更新與此代碼實體:

public void Update(ref CommandeVente vente) 
{ 
    Ctx.Etat.Attach(vente.etat); 
    Ctx.Entry<Dossier>(vente).State = EntityState.Modified; 
} 

CommandeVente類是從一個繼承了DossierVente類繼承也從檔案類。

當我保存SQL請求生成採取實體的極少數性質的情況下,和一個修改是不是:

UPDATE [dbo].[Dossiers] 
SET [verrouile] = @0, [numDossier] = @1, [dateCreation] = @2, [dateCloture] = NULL, [tva] = @3, [PrixHT] = @4, [prixTTC] = @5 
WHERE ([id] = @6) 

你知道這個問題怎麼解決呢?

謝謝。

+0

SQL是否只包含值已更改的屬性? –

+0

不,在此cas中更改的唯一屬性是Etat.id(SQL表中的FK Etat_id),並且此屬性不在請求中。示例請求中的屬性根本沒有改變。 – Julien

回答

0

此問題的解決方案是將foreignkey和相關實體分開。

在我爲例我在的Vente類

public virtual Etat etat { get; set; } 

使用在這種情況下,實體框架必須管理外鍵,但在我的情況下,它沒有。

所以我修改了實體:

public int? etatId { get; set; } 
public Etat etat { get; set; } 

它完成。現在外鍵正確更新。