标签: savechanges

c#向对象上下文添加新对象将返回"更新条目时发生错误",重复主键条目

我在尝试将对象添加到Entity Framework中的对象上下文时遇到问题.

这是代码:

//related object ids are retrieved from another context.
//since I thought the problem could be linked to object loaded in this context, I tried to
//close it and start on a fresh object context... 
int idetab = currentEtab.Id;
long idnivcycle = selectedNivcycle.id_nivcycle;
long idanscol = AnneeScolaireEnCours.id_annee_scolaire;
//and this context is closed
context.Dispose();


//This is the new object context
objectcontextEntities ctest = new objectcontextEntities();
//from where I retrieve all the objects I want to link to the object …
Run Code Online (Sandbox Code Playgroud)

c# mysql entity-framework object savechanges

2
推荐指数
1
解决办法
2418
查看次数

在调用SaveChanges()之前访问添加实体的id

我正在使用EF 4.3.1,我已经覆盖了上下文中的SaveChanges(),这样我就可以获得对象及其状态的列表,并在我的审计日志表中创建条目.我需要将记录的id存储在审计日志表中,以便我对它进行引用.插入记录时会出现问题,因为在保存之前我无法访问id.有什么方法可以获得身份证吗?

public override int SaveChanges()
{
        ChangeTracker.DetectChanges();

        var objectStateManager = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager;
        var modifiedAuditableEntities = objectStateManager.GetObjectStateEntries(EntityState.Modified | EntityState.Added).Where(e => (IAuditable)e.Entity != null);

        foreach (var entry in modifiedAuditableEntities)
        {
            var entity = (IAuditable)entry.Entity;

            if (entity != null)
            {
                switch (entry.State)
                {
                    case EntityState.Added:
                        entity.IsAdded = true;
                        break;
                    case EntityState.Deleted:
                        entity.IsDeleted = true;
                        break;
                    case EntityState.Modified:
                        entity.IsModified = true;
                        break;
                }

                this.EntitySet<AuditLogEntry>().Add(this.auditLogService.CreateAuditLogEntryForEntity((IAuditable)entry.Entity));
            }
        return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

entity-framework savechanges audit-logging

2
推荐指数
1
解决办法
2945
查看次数

2
推荐指数
1
解决办法
9836
查看次数

Django:更新X量模型的表单

我有一个页面,它显示一个过滤的模型实例列表,并允许用户更新它的某些字段或添加新的字段作为表单.

我很好奇wpuld是一个聪明的方法,删除和重新保存所有输入数据或对每个数据进行比较并保存已编辑/新的字段和实体.

我想提醒你,我使用postgres来保存这些值,并且我显示了这个表单的大约20个条目.

database forms django savechanges

1
推荐指数
1
解决办法
2080
查看次数

EF4/WCF SaveChanges()最佳实践

这就是我们如何在WCF中为我们的EF实体实现通用的Save()服务.TT为我们工作.即使我们没有任何问题,我也不愿意认为这是最好的方法(即使它可能是).你们看起来很聪明,乐于助人,所以我想我会提出这样的问题:

有没有更好的办法?

[OperationContract]
public User SaveUser(User entity)
{
    bool _IsDeleted = false;
    using (DatabaseEntities _Context = new DatabaseEntities())
    {
        switch (entity.ChangeTracker.State)
        {
            case ObjectState.Deleted:
                //delete
                _IsDeleted = true;
                _Context.Users.Attach(entity);
                _Context.DeleteObject(entity);
                break;
            default:
                //everything else
                _Context.Users.ApplyChanges(entity);
                break;
        }
        // now, to the database
        try
        {
            // try to save changes, which may cause a conflict.
            _Context.SaveChanges(System.Data.Objects.SaveOptions.None);
        }
        catch (System.Data.OptimisticConcurrencyException)
        {
            // resolve the concurrency conflict by refreshing 
            _Context.Refresh(System.Data.Objects.RefreshMode.ClientWins, entity);
            // Save changes.
            _Context.SaveChanges();
        }
    }
    // return
    if (_IsDeleted)
        return null; …
Run Code Online (Sandbox Code Playgroud)

wcf entity-framework savechanges self-tracking-entities

1
推荐指数
1
解决办法
7359
查看次数

EF4 SaveChanges如何避免内存不足异常

现有的片段

foreach (var ownerCandidates in ownerToCandidatesDictionary)
  {
    foreach (var candidate in ownerCandidates.Value)
    {
       transactionEntities.AddToSomeEntity(someObject)
    }
  }
                transactionEntities.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
Run Code Online (Sandbox Code Playgroud)

正在重写

    int i = 0 ; 
    foreach (var ownerCandidates in ownerToCandidatesDictionary)
    {
         foreach (var candidate in ownerCandidates.Value)
         {
             transactionEntities.AddToSomeEntity(someObject)
          }
          if ( i++ % 1000 == 0 ) 
          {
               transactionEntities.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
          } 
    }

transactionEntities.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
Run Code Online (Sandbox Code Playgroud)

在程序成功终止的情况下,我们会提供相同的功能吗?我关注的是我们继续添加,循环中的SaveChanges只能使用自之前的SaveChanges以来添加的内容.我们这里有分批储蓄吗?如果不是这样的话,原始片段可以如何改变以避免

12/06/2012 7:50:37 PM : System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Data.Mapping.Update.Internal.Propagator.Project(DbProjectExpression node, PropagatorResult row, TypeUsage resultType)
   at System.Data.Mapping.Update.Internal.Propagator.Visit(DbProjectExpression node)
   at System.Data.Common.CommandTrees.DbProjectExpression.Accept[TResultType](DbExpressionVisitor`1 visitor)
   at System.Data.Mapping.Update.Internal.Propagator.Propagate(UpdateTranslator parent, EntitySet table, …
Run Code Online (Sandbox Code Playgroud)

savechanges entity-framework-4

1
推荐指数
1
解决办法
3907
查看次数

Umbraco CMS无法保存模板

我在visual studio中设置了一个新的umbraco项目,任何预装的模板,当我试图添加新的母版页时我无法保存它,我可以在visual studio中编辑它但我不能保存umbraco后端的任何变化.任何消化来解决我的问题?

umbraco savechanges

1
推荐指数
1
解决办法
1531
查看次数

用于关闭Windows窗体应用程序的事件处理程序

我试图创建一个event handler这样的用户,当用户选择close(x)按钮时,它会提示用户保存任何未保存的更改.这是我的C#代码:

private void CloseFileOperation()
{
    // If the Spreadsheet has been changed since the user opened it and
    // the user has requested to Close the window, then prompt him to Save
    // the unsaved changes.
    if (SpreadSheet.Changed)
    {
        DialogResult UserChoice = MessageBox.Show("Would you like to save your changes?", "Spreadsheet Utility",
                MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);

        switch (UserChoice)
        {
            case DialogResult.Yes:
                SaveFileOperation();
                this.Close();
                break;
            case DialogResult.No:
                this.Close();
                break;
            case DialogResult.Cancel:
                return;
        }
    }

    // If the …
Run Code Online (Sandbox Code Playgroud)

c# forms validation savechanges winforms

1
推荐指数
1
解决办法
2788
查看次数

savechanges() 后值发生意外变化

我正在尝试通过 c# 中的 Visual Studio 2013 在基于实体框架的数据库上保存值。

我必须节省数据库拍卖数据。每个拍卖都有自己的 id,一个 int,这是它的主键。

当我尝试在数据库上添加拍卖时,我执行以下操作:

using(var c = new AuctionSiteContext(ConnectionString)
{
var auction = new Database.Auction
       {
              Id = auctionId,    //auctionId=0
              /*
              other stuff
              */
       };
c.Auctions.Add(auction);
c.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

问题是,auctionId 设置为 0,我通过调试器检查了它,但是当我执行 saveChanges(); 时 并再次控制该网站上唯一拍卖的值,其Id已更改为1。

老实说,我不明白为什么 savechanges() 调用可以更改该值,因为数据库上的拍卖列没有限制,我的意思是,为什么它不能简单地为 0?

每次我添加拍卖时都会这样做,id 增加 1,但所有其他参数保持不变。

编辑:我决定从 0 开始序列,这就是这个意思。但我什至尝试从 1 开始,这意味着第一次拍卖的 id=1,但在保存更改后它变成了 2。

c# entity-framework savechanges

1
推荐指数
1
解决办法
1204
查看次数

EF4 ObjectContext.SaveChanges线程安全吗?

我通过Entity Framework 4访问我的数据库.

我有一个服务器侦听端口,等待一些消息.当消息到来时,它将被转换为表行,并且应该将其插入到数据库中.但是,可以同时发送多条消息.对于每条消息,我创建一个Task(来自TPL)并异步执行它.

这些任务中的每一个都创建一个ObjectContext实例,创建相应实体类的对象(表示DB中的表),将数据插入ObjectContext,然后调用SaveChanges方法.

因此每个线程都创建了自己的ObjectContext.ObjectContext的实例是否可以影响ObjectContext的任何其他实例?这种情况会有副作用吗?

(请注意,插入的数据不会创建任何参照完整性错误).

c# entity-framework savechanges thread-safety

0
推荐指数
1
解决办法
1284
查看次数