如何解决EntityFramework创建对象
| 拉迪斯拉夫,对不起,也许我没有正确提出这个问题。假设在WinForm应用程序中,我正在创建新对象: var newEmission = _emissionBindingSource.Current as Emission;
if (newEmission == null) return;
newEmission.SharesNumber = _context.GetNewSharesNumber();
public int GetNewSharesNumber()
{
return Shares.Max(s => s.Number)+1;
}`
但是最大编号不会改变,除非我没有保存之前插入的对象。因此,在这种情况下,我必须分别保存每个对象吗?
更新1
假设我创建了新的对象发射。我把Shares.Max(s => s.Number)+1到新对象的SharesNumber字段。现在我要创建第二个发射对象,并且此对象的SharesNumber必须大于前一个对象的1。只有保存第一个创建的对象,我才能实现此目的。
解决方法
var newEmission = _emissionBindingSource.Current as Emission;
if (newEmission == null) return;
newEmission.SharesNumber = _context.GetNewSharesNumber();
public int GetNewSharesNumber()
{
// this will always query DB for max value
return Shares.CreateSourceQuery().Max(s => s.Number)+1;
}
但是我相信您应该使用某种存储过程来分配新数字或使用自动递增列,因为如果有多个用户使用多个应用程序,则可能会出现重复数字的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。