【问题标题】:Saving data using Entity Framework 5.0 and xtragrid使用 Entity Framework 5.0 和 xtragrid 保存数据
【发布时间】:2013-09-24 17:47:35
【问题描述】:

我正在使用 xtragrid 来保存、加载和修改数据。现在切换到 EF5 后,它就不起作用了。尝试将我的代码更改为localtobindinglist,但数据库中没有任何更改。有什么建议吗?

public partial class formKonstruksiyon : Form
{
    public Tank_Analizor_DBEntities db;

    public formKonstruksiyon()
    {
        InitializeComponent();

        db = new Tank_Analizor_DBEntities();
    }

    private void formKonstruksiyon_Load(object sender, EventArgs e)
    {
        konstruksiyonBindingSource.DataSource = db.Konstruksiyon.Local.ToBindingList();
        gridControl1.DataSource = konstruksiyonBindingSource.DataSource;
    }

    private void barButtonItemSave_ItemClick(object sender,
      DevExpress.XtraBars.ItemClickEventArgs e)
    {
        try
        {
            db.SaveChanges();
            LibStatic.ShowSuccessMessage();
        }
        catch (Exception ex)
        {
            LibStatic.ShowErrorMessage(ex);
        }
    }

    private void silToolStripMenuItem_Click(object sender, EventArgs e)
    {
        gridView1.DeleteRow(gridView1.FocusedRowHandle);
    }
}

更改后的一些更新:

 konstruksiyonBindingSource.DataSource = db.Konstruksiyon.ToList();

 private void barButtonItemSave_ItemClick(object sender, 
   DevExpress.XtraBars.ItemClickEventArgs e)
        {
            LibStatic.GridPostPendingRow(gridView1);

            try
            {
                konstruksiyonBindingSource.DataSource = db.Konstruksiyon.Local.ToBindingList();

                db.SaveChanges();
                LibStatic.ShowSuccessMessage();
            }
            catch (Exception ex)
            {
                LibStatic.ShowErrorMessage(ex);
            } 
        }

它有点保存:如果我只添加一个条目它不会保存,但如果我添加两个它会保存。这怎么可能?

【问题讨论】:

  • 你用db.Konstruksiyon试过了吗?
  • 是的,我收到一条错误消息,提示“不支持直接将数据绑定到存储查询(DbSet、DbQuery、DbSqlQuery)。”,但这是我一直使用的方法,直到 ef5
  • 一个简单的谷歌搜索你的错误信息给了我this。你调查过吗?
  • 是的,我一开始就是这么做的,尝试绑定本地数据源。但问题是绑定源不存在。
  • 你可以试试db.Konstruksiyon.ToList();,只要上下文在显示网格时保持活动状态,实体应该有更改跟踪。

标签: c# entity-framework xtragrid


【解决方案1】:

您应该将实体添加到您的上下文中,或者如果您正在执行更新,请附加实体并将 State 属性设置为已修改:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=619

【讨论】:

    【解决方案2】:

    尝试让数据源成为ObservableCollection,而不是列表:

    konstruksiyonBindingSource.DataSource = db.Konstruksiyon.Local; 
    

    它知道何时发生更改,因此应该更适合更改跟踪

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2019-10-25
      • 1970-01-01
      • 2017-12-30
      • 2013-01-10
      相关资源
      最近更新 更多