我在 MVC 上遇到了同样的问题,我找到的最佳解决方案是在我的模型上使用 ForeignKey 数据注释,这样我就可以只插入相关对象的 ID 并稍后检索对象。这是一个例子:
public class Product {
public int ProductId { get; set; }
public string Name { get; set; }
// Add this field so I can add the entity to the database using
// category id only, no need to instantiate the object
public int CategoryId { get; set; }
// Map this reference to the field above using the ForeignKey annotation
[ForeignKey("CategoryId")]
public virtual Category Category { get; set; }
}
public class Category {
public int CategoryId { get; set; }
public string Name { get; set; }
}
现在,自从我上次使用 WebForms 已经很久了,所以我真的不知道如何将类别列表绑定到 DropDownList,可能是这样的:
<asp:DropDownList ID="CategoryId" SelectMethod="GetCategories" runat="server" />
也许当您在 Create 或 Update 方法上恢复您的产品时,它会带有正确归因的 CategoryId 属性,然后您所要做的就是保存 EF 的上下文。祝你好运。