实体框架代码首先不在联结表中插入任何内容

时间:2017-12-07 07:37:41

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

我正在尝试使用ASP.net MVC创建一个Web应用程序。 该应用程序使用javascript库cytoscape在浏览器中绘制完整的图形。
使用插入前端表格中的信息生成javascript对象,然后将此对象传递给cytoscape并创建图形。这些都很好,是前端工作。无需担心。 Web应用应该能够存储数据库中的图形。这就是为什么我必须有一个后端,它必须是ASP.NET MVC 为了存储图表,我将用于创建图表的javascript对象转换为JSON,然后使用AJAX将其传递给我的后端。
现在在后端方面,CONTROLLER的“Store”方法获取JSON字符串,然后对其进行deserilize,将其传递给EF,我希望整个事情将存储在数据库中,它会,除了 JUNCTION TABLE ,它已创建但没有值。


现在这是我的模型。假设这个JSON来到控制器:

{
"nodes":
    [
        {"data":{"id":"r1"}},
        {"data":{"id":"r2"}},
        {"data":{"id":"r3"}}
    ],
"edges":
    [
        {"data":{"id":"r1r2","source":"r1","target":"r2"}},
        {"data":{"id":"r1r3","source":"r1","target":"r3"}},
        {"data":{"id":"r2r3","source":"r2","target":"r3"}}
    ]
}

这是模型

public class Edge
{
    public int id { set; get; }
    public EdgeData data { set; get; }
    public virtual ICollection<Node> Nodes { get; set; }
}
public class EdgeData
{
    [Key]
    public int primaryKey { set; get; }
    public string id { set; get; }
    public string source { set; get; }
    public string target { set; get; }
}
public class Node
{
    public int id { set; get; }
    public NodeData data { set; get; }
    public virtual ICollection<Edge> Edges { get; set; }
}
public class NodeData
{
    [Key]
    public int primaryKey { set; get; }
    public string id { set; get; }
}
public class Elements
{
    public int id { set; get; } 
    public List<Node> nodes { set; get; }
    public List<Edge> edges { set; get; }
}

这是DbContext类:

public class Context : DbContext
{
    public DbSet<Elements> elements { set; get; }
}

最后这是Controller方法:

[HttpPost]
public bool Store(string jsonObj)
{
    var elements = JsonConvert.DeserializeObject<Elements>(jsonObj);
    using (var db = new Context())
    {
        db.Configuration.ProxyCreationEnabled = true;
        db.Configuration.LazyLoadingEnabled = true;
        db.elements.Add(elements);
        db.SaveChanges();
    }
    return true;
}

问题在于,尽管一切都保存得很好,但SQLServer2017中多对多关系的junction table EMPTY 。 你有什么帮助吗?

0 个答案:

没有答案