我有一个对象有一个属性,在创建时,应始终使用对象的id(主键)填充。
我该怎么做?
我尝试在db savechanges()之后将字段分配给字段,然后返回到视图,但是在我的数据库上创建了两条记录。
还尝试加载相同的新实例,将id分配给字段并保存,但也创建了两个记录。
感谢您的帮助。
//model
public partial class supplier
{
public int id { get; set; }
public int ref { get; set; }
}
//controller
public ActionResult Create(supplier sup)
{
if (ModelState.IsValid)
{
db.suppliers.add(sup)
db.SaveChanges();
sup.ref = sup.id;
db.SaveChanges();
}
...
}
大家好,感谢您的帮助......我找到了解决方案......不知道它是否是正确的解决方案,但它确实能够胜任。
对于任何有兴趣的人,这是:
supplier needToUpdateSupplier = (from s in db.suppliers where s.id.Equals(supplier.id) select s).ToList().FirstOrDefault();
if (needToUpdateSupplier != null)
{
needToUpdateSupplier.ref = supplier.id;
db.suppliers.Attach(needToUpdateSupplier);
db.Entry(needToUpdateSupplier).Property(e => e.ref).IsModified = true;
db.SaveChanges();
}
答案 0 :(得分:0)
注意:该属性必须是可空的,因为在创建时它将为空。
// A Test object
class MyObject
{
public int ID {set;get;}
public int? MyProperty {set;get;}
}
void Foo()
{
var test = new MyObject();
db.MyObjects.Add(test);
db.SaveChanges();
// at this moment test has the Id set. You can assign it.
test.MyProperty = test.Id;
db.SaveChanges();
}
答案 1 :(得分:0)
使用EF,它应该为您设置ID:
db.Posts.Add(post);
db.SaveChanges();
// post.ID should be now set