c# - Entity Framework 6 : Clone object except ID

标签 c# entity-framework mvvm entity-framework-6

<分区>

在我的 MVVM 程序中,我有一个模型类(比如 MyModel),我从中有一个从数据库读取的实例(使用 Entity Framework )。检索对象时,我将所有数据呈现给用户。稍后用户将修改一些字段。
我想要的是创建相同的对象,除了它的 ID(因为 ID主键并且自动递增).
那么我该如何处理呢?我不想一个一个地复制所有字段,这不是一个可靠的方法。因为也许将来模型可能会被修改,所以这样我就必须在克隆方法中考虑到这一点。

那么有什么优雅的方法可以复制对象并在保存到数据库时,它的 ID 再次自动递增? (将 ID 设置为 null 会给我一个编译器错误,因为它是 int 类型)。

最佳答案

我注意到不需要复制。显然,在向数据库添加模型实例时(即使 ID 设置为数据库中已存在的 ID),Entity Framework 会在数据库中插入一个新行并自动递增它的主键。所以这个功能已经内置到 EF 中。我不知道这个,抱歉。
为了清楚起见,这里有一个例子:

using(var database = new MyDbContext()) {
    MyModel myModel = database.FirstOrDefault(m => m.SomeProperty == someValue);
    myModel.SomeOtherProperty = someOtherValue; //user changed a value
    database.MyModels.Add(myModel); //even though the ID of myModel exists in the database, it gets added as a new row and the ID gets auto-incremented 
    database.SaveChanges();
}

关于c# - Entity Framework 6 : Clone object except ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720803/

相关文章:

c# - 邮箱地址拆分

c# - 在 ClickOnce 应用程序中包含一个文件夹

c# - Fluent Migrator 单元测试 : Holding onto Connection

database - 将数据导出为 C#/VB 格式,以便在 EF Code First 的数据库初始化中使用它们

c# - 根据 ListView 填充启用/禁用 WPF 按钮

silverlight-4.0 - 非通用 CompositePresentationEvent 和 EventSubscription?

c# - 检查 'null'

c# - 完全删除重复的字符(正则表达式/C#)

php - Symfony2 : How to avoid duplicate entities that already exist in the database?

WPF 数据验证?有什么比 IDataErrorInfo 更好的吗?