我有一个包含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 的问候,
答案 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);