0

我要做的是通过 FluentHtml 在 EF 实体中设置外键对象。我有一个 Foo 实体,它通过 Foo.Bar 引用了对象 Bar。我想要做的是在我的视图表单中设置 Bar 的值。我的模型通过 Model.Bars 包含所有 Bars 的集合。在我看来,我只是在使用<%= this.Select(m => m.Foo.Bar).Options(Model.Bars) %>,但模型状态声称它无效。下拉列表中正确填充了 Bar id,并且看起来都有效。在我的表单中设置 EF 实体引用属性是否需要一些特殊的魔法?

我刚从 Linq2SQL 移过来,我只是使用 Select(m => m.Foo.BarId),因为您可以映射键引用以及对象。但是,实体框架不允许这样做。

4

2 回答 2

1

您遇到了使用业务对象作为视图模型所产生的许多复杂情况之一。我可能会建议,从长远来看,如果您将业务对象转换为轻量级视图模型以进行渲染和绑定,那么麻烦会少得多。让您的服务层(或控制器,如果必须的话)弄清楚如何根据 EditFoo.BarId 设置 Foo.Bar。

于 2009-11-10T16:42:54.137 回答
0

我不知道 FluentHtml。但关于 EF:

  1. EF 4.0 让您拥有“外键关联”,它可以让您像 L2S 一样引用 m.Foo.BarId。
  2. 在 EF 1 中,或在 EF 4 中使用“独立关联”,您需要执行 m.Foo.Bar.Id(注意额外的点),前提是已加载 Bar。
于 2009-11-05T18:25:08.627 回答