Json序列化没有关系的EF对象

时间:2013-04-24 14:09:56

标签: c# asp.net-mvc entity-framework json.net

我正在尝试将Json序列化EF对象存储在另一个数据库中。

我正在试图存放的其中一个项目是购物车,它有一些相关的表格。

如何在不拖动关系的情况下存储购物车(最好不要使用.Select()来手工挑选不同的列)

[AllowAnonymous]
public ActionResult Test() {

    using (var db = new DALEntities())
    {
        var q = db.tblCarts.SingleOrDefault(x => x.CartItemID == 4275);

        q.tblContactsExtra = null;
        q.TBLINVENTORY = null;

        var settings = new JsonSerializerSettings {PreserveReferencesHandling = PreserveReferencesHandling .Objects} ;

        var str = JsonConvert.SerializeObject(q, settings);

        return Content(str);
    }

1 个答案:

答案 0 :(得分:2)

不幸的是,您必须将外键设置为允许空值。否则你将无法达到你想要达到的目标。要做到这一点,只需使ID字段可以为空,如:

public int? ContactsExtraId { get; set; }
public virtual tblContactsExtra tblContactsExtra { get; set; }

public int? InventoryId { get; set; }
public virtual TblInventory TBLINVENTORY { get; set; }