簡體   English   中英

使用Entity Framework添加新數據

[英]Add new data with Entity Framework

我正在嘗試向我的數據庫添加新數據,這是我的代碼:

// This is the dbContext
private BugTrackerDBContainer db = new BugTrackerDBContainer();

//The objet with its properties
public static Developper devAdded = new Developper();
devAdded.Name = txb_name.Text;
devAdded.FirstName = txb_firtname.Text;

// Add to the database
db.AddToDevelopper(devAdded);
db.SaveChanges();

我的問題是我啟動它一次,它工作正常,但兩次我有這個錯誤:

IEntityChangeTracker的多個實例不能引用實體對象。

為什么 ?

謝謝你的幫助

什么是函數和變量聲明的混合?
您試圖將相同的靜態實例對象兩次添加到同一個DataContext,它將失敗。

  • 不要聲明靜態變量。 是壞事。
  • 不要將Context聲明為字段。 使用塊作為局部變量使用它。
  • 不要將對文本框等UI元素的訪問與數據庫操作混合在一起。 在應用程序中創建圖層。

一個例子 :

public void AddDevelopperButton_Click(object sender, EventArgs e)
{
    this.AddDevelopper(txb_name.Text, txb_firtname.Text);
}

public Developper AddDevelopper(string name, string firstName)
{
    Developper devAdded = new Developper();
    devAdded.Name = name;
    devAdded.FirstName = firstName;

    using(BugTrackerDBContainer db = new BugTrackerDBContainer())
    {
        db.AddToDevelopper(devAdded);
        db.SaveChanges();
    }
    return devAdded;
}

您不應該將數據庫實體作為靜態對象。 問題很可能是這一行:

public static Developper devAdded = new Developper();

將代碼更改為@ Scorpi0建議的內容。

我的建議是:

答:學習基本編程

什么可能的原因聲明靜態:

public static Developper devAdded = new Developper();

B:然后開始研究EF和其他框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM