标签: savechanges

使用EntityFramework 4为实体分配ID

我想为我的实体实现"默认"Id生成支持.

保存实体时,我希望EntityFramework只生成实体的id值(如果尚未设置).如果ID已经具有非null,非零值,我希望在将实体保存在数据库中时保留该实体ID.

我正在将数据从遗留数据模型(从旧数据库创建的EntityFramework模型)迁移到新创建的(模型优先)EntityFramework模型.让我们称之为旧模型A和新模型T.

通常,我希望T实体在保存时设置它们的ID(它们都是int64),以便长期使用新模型.

目前,我明确地根据我正在迁移的相应A实体的Id来分配T实体ID.这样就很容易检查迁移结果.

但是,虽然我可以将T实体的id分配给与迁移例程中的A实体相同的id,但在保存实体后,Id值已更改.

有没有办法覆盖T模型中所有实体的默认保存方法,因此只有在保存之前尚未在实体中设置id值时才分配id值?

我在这里看了一些其他的EntityFramework/Id问题,但在我看来,他们都没有问过同样的问题.

感谢任何线索.

c# savechanges entity-framework-4

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

保存在实体框架中

我读过这篇文章,但仍然误解了关键时刻.我们不需要打电话

_context.SaveChanges()
Run Code Online (Sandbox Code Playgroud)

在每个删除/更新/ ...操作?

如果我更改任何实体的属性确实SaveChanges()提交结果到数据库或我必须手动设置EntityState.Modifyed

这是我的代码:

public class Repository<T> : IRepository<T> 
    where T : class
{
    private IDbContext _context;

    public Repository(IDbContext context)
    {
        _context = context;
    }

    private IDbSet<T> DbSet
    {
        get
        {
            return _context.Set<T>();
        }
    }

    #region IRepository<T> Members

    public void Insert(T entity)
    {
        DbSet.Add(entity);
    }

    public void Delete(T entity)
    {
        DbSet.Remove(entity);
    }

    public IQueryable<T> SearchFor(Expression<Func<T, bool>> predicate)
    {
        return DbSet.Where(predicate);
    }

    public IQueryable<T> GetAll()
    {
        return DbSet;
    }

    public T GetById(int id) …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework savechanges

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

实体框架查询仅添加但未保存的值

我在几年内使用Entity Framework,现在我遇到了一些问题.

我将一个实体添加到我的表中

Entities.dbContext.MyTable.Add(obj1);
Run Code Online (Sandbox Code Playgroud)

好的

然后,我想在MyTable上查询,比如

Entities.dbContext.MyTable.Where(.....)
Run Code Online (Sandbox Code Playgroud)

上面的代码将在db中查询我的MyTable.

还有一种方法可以在saveChanges之前查询刚刚添加的值吗?(obj1)怎么样?

UPDATE

我为什么需要这个?因为,对于我添加的每个新元素,我需要编辑上一个和下一个记录中的一些值(此表中有一个datetime字段)

UPDATE2

假设我必须添加很多对象,但只在添加最后一项后才调用saveChanges.每次添加新项目时,我都会读取其日期时间字段,并在数据库中搜索上一个和下一个记录.在这里,我编辑前一个和下一个记录的字段.现在,问题是:如果我插入另一个项目,例如,下一个项目是"Obj1",我必须找到并编辑它,但我找不到它,因为我没有保存我的更改.现在更清楚了吗?

c# sql entity-framework savechanges

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

在ADO.Net Data Services中使用.SaveChanges()方法的最佳方法是什么?

有没有人对.SaveChanges()方法的使用有一些很好的信息?

尝试在我的数据上下文对象上使用.SaveChanges()方法时遇到各种问题.我从现有数据源获取数据,创建适当的EntityFramework/DataService对象,用数据填充这些创建的对象,将这些对象添加到上下文,然后通过调用.SaveChanges保存该数据.

我提出的场景(以及与它们相关的问题)就是这样......在每个场景中,我都有一个foreach循环,它从DataTable中的行获取数据并生成对象,将它们作为上下文附加到上下文中他们去.(注意:三个对象是"成员"和两个通过SetLink调用连接的"地址") - 基本上这是一个转换工具,用于从一个数据存储中获取数据并将其按压到数据服务公开的数据存储中.

  • 在foreach循环结束时调用.SaveChanges(),不带任何参数(即在循环外部)
    • OutOfMemory错误约1/3(90,000次保存中有30,000次) - 不确定如何发生这种情况,因为每个保存项目都是对数据库的单独SQL调用,内存耗尽的是什么?
  • 每个循环调用.SaveChanges(),不带任何参数
    • 这是有效的,但绝对是绝对的(90,000次保存需要8小时)
  • 在foreach循环结束时调用.SaveChanges(SaveChangesOption.Batch)一次
    • 相同的OutOfMemory错误,但没有任何保存到数据库
  • 每个循环调用一次.SaveChanges(SaveChangesOption.Batch)
    • 404未找到错误
  • 每10个循环调用一次.SaveChanges(SaveChangesOption.Batch)
    • 400错误请求错误(偶尔)
    • OutOfMemory经过多次改动
  • 许多随机尝试每个循环创建一次上下文,或者在循环开始时将其作为变量或将其作为可用的私有成员变量.
    • 不同的结果,无法量化,没有真正那么好

在执行像这样的大数据加载时,从客户端对象调用.SaveChanges()的首选方法是什么?有什么我不知道如何.SaveChanges()的工作原理?任何人都可以提供有关如何使用此功能以及通过数据服务保存数据的限制(如果有)的更多详细信息?围绕.SaveChanges()方法调用是否有任何最佳实践?是否有关于.SaveChanges()方法调用的特别好的文档?

entity-framework savechanges wcf-data-services

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

检查实体框架中的插入或更新是否成功

在ADO.NET中,ExecuteNonQuery()"对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数"(http://msdn.microsoft.com/en-us/library/system. data.sqlclient.sqlcommand.executenonquery.aspx)

在EF v1中,context.SaveChanges()方法返回"调用SaveChanges时处于已添加,已修改或已删除状态的对象数".(http://msdn.microsoft.com/en-us/library/bb739065.aspx)

请告诉我,当多个实体(或单个实体)被添加或更新到context和context.SaveChanges()方法时,如何检查实际的INSERT或UPDATE是否成功.

如果INSERT(s)或UPDATE(s)成功没有异常,我们可以假设吗?

谢谢

entity-framework savechanges

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

缺少EF ObjectContext.SaveChanges

我正在使用Entity Framework进行新项目.我从一年前开始使用EF.今天我尝试使用Visual Studio(2008 SP1和2010)生成实体数据模型,它正在生成对象上下文属性和实体集,但尚未生成SaveChanges方法.我甚至尝试使用我曾经用于生成实体数据模型的数据库.我不知道发生了什么.我使用过我的笔记本电脑和我的桌面,但即使我之前在两者中都做过,也没有使用它们.

我的环境是:

Visual Studio 2008 SP1.SQL Server 2008 Express.Web客户端软件工厂2008年2月发布.

entity-framework savechanges

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

EF 在表中插入值一段时间后失败

我正在工作EF。我试图插入一个表,插入函数在一个线程中。

private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    int bytes = port.BytesToRead;
    //string indata = sp.ReadExisting();

    Thread.Sleep(50);

    try
    {
        receivedBytes = port.BaseStream.Read(buffer, 0, (int)buffer.Length);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message.ToString());
    }

    var receiveData = BitConverter.ToString(buffer, 0, receivedBytes);
    var finalData = receiveData.Replace("-", "");
    //Thread.Sleep(100);

    Console.WriteLine("Thread Going to Start");

    new Thread(() => {
            SaveData(finalData);
        }).Start(); // starting the thread

    port.DiscardOutBuffer(); 
    port.DiscardInBuffer();
}
Run Code Online (Sandbox Code Playgroud)

这是我的保存数据功能

public void SaveData(string finalData)
{
    Console.WriteLine(LineNumber() + "Data Transmiting...");
    thread = Thread.CurrentThread;         


mdc_dbEntities e = new mdc_dbEntities(); …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework savechanges entity-framework-6

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

是否可以在本地保存Firebug中的更改?

我要做的是使用Firebug保存我在不同网站上对CSS和HTML所做的更改.

为了清楚起见,我希望Firebug通过FTP或任何东西将更改上传到服务器.我只是想在本地保存更改,所以只有我能够看到它们.

例如,我看到一些Firefox/Chrome扩展程序在Youtube上的每个视频下添加了一个下载按钮,所以我知道可以这样做.

如果你有不同的方式来实现我想要做的事情,我会很高兴听到它.

(它不一定是Firebug.)

提前致谢!

html css firebug savechanges

6
推荐指数
2
解决办法
2万
查看次数

实体框架SaveChanges"挂起"程序

我的代码非常简单:

Context.AddObject("EntitiesSetName", newObjectName);
Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

它工作正常,但只有一次 - 第一次.那个时候,在跟踪了SaveChanges()之后,我用Shift + F5中断了我的程序.这是一个调试过程,因此我手动从数据库中删除了新创建的记录,并在调试模式下再次运行程序.但它不再起作用 - 当调用SaveChanges()时它会"挂起".

我看到的另一个奇怪的事情:如果我在addObject()和SaveChanges()之前编写的内容如下:

var tempResult = (from mydbRecord in Context 
                  where Context.myKey == 123 
                  select mydbRecord.myKey).Count(); 
// 123 is the key value of the record that should be created before the program hangs.
Run Code Online (Sandbox Code Playgroud)

tempResult将具有下一个值:1.

因此,似乎创建了记录(当程序挂起时)并且现在存在,但是当我使用其他工具手动检查数据库时 - 它没有!

我做错了什么?是某种缓存问题还是其他什么?

编辑:

我找到了问题的根源.这根本不是EF问题,但这是我用来手动控制数据库(Benthic)的工具的问题.

当工具连接到同一个DB时,我的程序会陷入某种死锁状态(当我用SaveChanges()调用时).

所以,问题是在同步区域,imho,所以我的问题可以标记为已解决.

entity-framework savechanges hang

6
推荐指数
0
解决办法
2338
查看次数

我可以使用键盘快捷键在 Linux 上的 Matlab 中保存工作吗?

Ctrl所有 Windows 编辑程序都允许您通过按-来保存您的工作S。Linux 拥有一套独立开发的、与 Windows 中标准键盘快捷键基本不同的键盘快捷键集。我在编写 Matlab 时正在学习一些 Linux 快捷方式(通过 GUI,从 BASH 打开),但我找不到任何快捷方式来保存我正在使用的代码,相当于Ctrl- S

有没有什么,或者在这个承载 Emacs 的操作系统中,它的键盘快捷键集中在根本不需要移动手上,这是通过将我的手移动到鼠标来保存代码的唯一方法?

linux bash matlab keyboard-shortcuts savechanges

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