自动更新检索到的记录的ID值

时间:2018-09-21 18:42:18

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

因此,请考虑以下课程:

public class Solution
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
}

以及以下方法

public void DoSomething()
{
    new Item originalItem = new Item();
    item.Name = "Test";

    InserIntoDb(originalItem);

    Assert.True(item.Id != 0);
}

public void InserIntoDb(Item item)
{
    context.Item.Add(item);
    context.SaveChanges();
}

在这种情况下,插入数据库后,EF会使用其自动生成的ID值自动更新originalItem。

当我添加一些逻辑以仅在名称不存在的情况下添加到数据库时,我的问题就开始了。如果存在,则不会发生插入,因此不会填充ID属性。

我的问题是:是否有一种方法可以使context.Item(在检索全部时)自动更新originalItem值的ID,而不必更改InsertIntoDb方法以返回Item,因此不必添加一行

originalItem = InsertIntoDb(originalItem);

预先感谢

1 个答案:

答案 0 :(得分:0)

不,没有内置的方法可以用数据库中的ID更新项目(如果存在)。

您将必须实现自定义方法才能完成此工作。如果一次只能读取少量或单个项目,则只需在输入之前尝试从数据库中获取命名的项目,然后为不存在的项目插入。

如果要对大量项目(超过5000个)执行此操作,请考虑使用存储过程在db服务器端执行此工作以提高查询性能。