【问题标题】:Send relational data using Json to wcf services使用 Json 将关系数据发送到 wcf 服务
【发布时间】:2015-07-08 05:45:45
【问题描述】:

角色和特权具有一对多的关系。但是在检索角色时,我得到了权限的空值“[]”。我正在使用 Json 使用具有代码优先方法的 EF6 将数据发送到 wcf 服务。

代码:

System.Web.Script.Serialization.JavaScriptSerializer objJSSerializer = 
     new System.Web.Script.Serialization.JavaScriptSerializer();
string strJSON1 = objJSSerializer.Serialize((
        from role in  context.Roles select role)
       .ToList());

输出:

[{"privileges":[],"users":[],"ID":1,"RoleName":"Admin","IsActive":1},

{"privileges":[],"users":[],"ID":2,"RoleName":"Apprisal Minister","IsActive":0}]

我尝试了context.Configuration.ProxyCreationEnabled = false;,但仍然无法获得权限。

基本上,我遇到的问题是,当我尝试序列化角色对象时。它不会序列化关系数据。我的意思是没有特权。

在实体框架6中获取关系数据的正确方法是什么。

【问题讨论】:

    标签: c# json entity-framework


    【解决方案1】:

    不确定你的意思是加载角色及其相关的权限,但这应该可以工作

    var roles = dbContext().Roles.Include(r => r.Privileges);
    

    并使用 Newtonsoft.Json ( nugget package ) 对其进行序列化,它处理关系而不是循环引用。因此,如果 Privileges 中有任何对 Roles 的引用,请在属性上使用属性 [JsonIgnore]

     string json = JsonConvert.SerializeObject(roles);
    

    【讨论】:

    • 您好 Thorarins,感谢您的回复。基本上,我得到的问题是,当我尝试序列化角色对象时。它不会序列化关系数据。我的意思是没有特权。
    • 好的,那又是一个,你有序列化前的数据吗?
    • 更改序列化代码并使用 Newtonsoft 序列化程序代替它处理关系并且比框架中的要好得多,请参阅我编辑的答案
    • 感谢 Thorarins,我能够得到你所说的值。
    【解决方案2】:

    实体框架默认启用延迟加载,这意味着不会自动从数据库中检索相关项目。

    假设您有一个包含多篇博文的博客,每篇博文都有一个作者和许多 cmets

    1 Post has 1 Author
    1 Post has many Comments 
    1 Comment has 1 Author
    1 Author has many posts
    1 Author has many comments
    

    现在要检索与帖子的相关作者、cmets 和 cmets 的作者的博客帖子,您需要在您的 DbSet<TEntity> 上使用 Include() 扩展方法,并将相关类型的名称添加为一个参数..

    using(var context = new BlogContext)
    {
         var blogsDetailed = context.Blogs.Include("Author")
                               .Include("Comments.Author);
     }
    

    我在 iPhone 上打字时可能会出现语法错误,但这就是它背后的想法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多