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