从DynamicData表单插入时保存相关对象

时间:2011-11-22 11:19:00

标签: database entity-framework-4.1 ef-code-first dynamic-data

我有EF Code First数据上下文,对于某些表(codebooks),动态数据Web应用程序用于管理。当通过DD界面创建实体时,一切看起来都不错,例如当我创建一个Book,其属性类型为Author named,我可以从下拉列表中按名称选择作者。

问题是当保存实体时,Book实体中的属性为null,我找不到在codebehind(Insert.aspx.cs)下拉列表中至少读取所选作者的Id的方法。不幸的是,我没有作为书中属性的ID,只有整个作者对象。

有没有办法在DynamicData中解决这个问题?

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是将引用实体的ID作为属性,使用

[ForeignKey("ReferencedEntityPropertyName")]
public int ReferencedEntityPropertyId {get; set;}

属性,其中ReferencedEntityPropertyName在这种情况下是作者。

这样,动态数据页面将引用对象的id设置为相应的属性,一切正常。

然而,在这种情况下,这不是最好的解决方案,因为对实体模型施加了更改,如果没有真正的单元测试来验证这个问题,那么当系统其余部分正在工作时,这不是我喜欢做的事情。打破了一些东西。