1

我需要在后期编辑操作中访问导航属性,但我目前的做法看起来并不是最好的选择,因为我调用了数据库并“重新更新”了模型。有更好的解决方案吗?

public class Foo
{
    public int Id { get; set; }
    public string SomeProp { get; set; }
}

public class Bar
{
    public int Id { get; set; }
    public int FooId { get; set; }
    public Foo Foo { get; set; }
}

[HttpPost]
public ActionResult Edit(Bar bar)
{
    // Here bar.FooId is set but bar.Foo is null as bar is not a Dynamic Proxy.

    ...

    bar = db.Bar.Find(bar.id);
    TryUpdateModel(bar);

    return View(bar);  // Here bar.Foo is set.
}

我发现的另一种方法是:

db.Bar.Attach(bar);
db.Entity<Bar>(bar).Reference(b => b.Foo).Load();

但它需要我参考我需要的所有导航属性。

4

1 回答 1

0

我不是 100% 确定这是否是正确或最好的方法,但是,在您处理帖子的 UI 表单中,UI 元素需要绑定到导航属性,或者您也可以将它们作为隐藏字段传递如果它们没有被修改

<!-- example of hidden properties -->
@Html.HiddenFor(x=>x.Foo.FooId)

<!-- exampld of editable UI element mapped to navigation property's someprop property -->
@Html.TextBoxFor(x=>x.Foo.SomeProp)
于 2013-09-06T17:49:28.780 回答