1

我正在使用实体框架来创建一个模型,我对实体框架很陌生,所以请耐心等待。

我希望我的数据库始终是所有生成的结果,所以我不想对模型本身进行修改。我想对数据库进行所有修改,然后点击“从数据库更新模型”。这一直在游泳!但是,如果我在两个表之间具有一对一的关系,并且我在数据库中设置了外键约束,我会在子表中获得一个导航属性,该属性可以返回到父表。

因此,如果我想从孩子访问父母,我可以做 child.parent.fieldName

这在理论上听起来不错,但是当我需要为实体框架创建的 JSON 序列化对象时,我的问题就出现了。我总是得到一个错误,因为它试图将父对象与子对象一起序列化。这通常在这一点上有一个无效的状态,所以.. A)它不能被序列化,B)我不想要所有额外的信息。

我是否以某种方式错误配置了数据库?有没有办法让数据库指定我只需要模型中的 Parent.Child Navigation 属性?而不是 Child.Parent?

4

1 回答 1

2

我是否以某种方式错误配置了数据库?有没有办法让数据库指定我只需要模型中的 Parent.Child Navigation 属性?而不是 Child.Parent?

不,数据库不知道您打算在其上使用某些工具的意图。如果您不想要导航属性,则必须在 EDMX 中通过删除它来更改它,但有时您需要该属性,但您也需要序列化。在这种情况下,您必须修改用于生成类的策略(如果您不使用 T4 模板,这将非常困难)以使用一些依赖于所使用的序列化 API 的特殊属性来将某些属性标记为未序列化。

正确的方法不是序列化实体,而是创建从实体填充的特殊数据传输对象,这些对象仅包含您要序列化的属性/数据,因此您不会遇到此问题。

于 2012-09-28T19:53:42.537 回答