根据Entity Framework上的其他列值设置列值

时间:2018-01-12 06:40:01

标签: c# entity-framework

我有一个包含2列名为Id(IDENTITY(1,1))和OriginalId

的表

当我们新添加实体时,OriginalId始终等于Id

要做到这一点,我必须编写这个愚蠢的代码

  MyClass obj = new MyClass()
  _repo.Add(obj);
  obj.OriginalId = obj.Id;
  _repo.Update(obj)

这个需要写入数据库2次。有没有办法让它写一次只有OriginalId = Id 的问候,

1 个答案:

答案 0 :(得分:3)

如果您的obj.id是自动递增的,只需尝试在id中获取最新的_repo,然后再将新的obj添加到存储库中。做这样的事情:

MyClass obj = new MyClass();

var latestId = _repo.GetLatestId();
obj.OriginalId = ++latestId;

_repo.Add(obj);

但是,如果您不想两次访问存储库,则需要更改表格方案。您的id不应自动增加,您需要自己生成id,或者您可以使用Guid.NewGuid方法生成唯一的id。在这种情况下,尝试这样的事情:

MyClass obj = new MyClass();

obj.id = Guid.NewGuid();
obj.OriginalId = obj.id;

_repo.Add(obj);