使用Entity Framework C#asp.net创建复杂的Json

伊戈尔·列瓦绍夫(Igor Levashov)

我有两个表:

产品

ProductId | ProductName
__________|____________
       1  | iPhone5
       2  | iPhone6
       3  | iPhone6s

图片

Id |    ImagePath     | ProductId
___|__________________|___________
1  | /images/231.jpg  |    2
2  | /images/432.jpg  |    2
3  | /images/111.jpg  |    1 

我想让Json看起来像

{  
   "id":"2",
   "ProductName":"iPhone6"
},
"Images":[  
   {  
      "Id":"1",
      "ImagePath":"/images/231.jpg"
   },
   {  
      "Id":"2",
      "ImagePath":"/images/432.jpg"
   }
]

因此,我想使用实体框架获取每个产品的所有图像。我尝试使用连接:

 var ads = db.Products.
      Join(db.Images, 
           x=>x.ProductId,
           cm=>cm.ProductId,
           (x ,cm) => new {
            Ads = x, 
            Images = cm
      }).
      Select(d => new {
            d.Ads.AdId,
            d.Images.ImagePath,
       }).
      Where(x => x.ProductId== 2).
      ToList();

还有我的杰森

[
    {
        "AdId":2,
        "ImagePath":"/images/231.jpg"
    },
    {
        "AdId":2,
        "ImagePath":"/images/432.jpg"
    }
]

我的产品和图片型号:

public class Product{

    public int ProductId { get; set; }
    public string ProductName { get; set; }

    public virtual ICollection<Image> Images { get; set; }
}

public class Image{

    public int ImageId { get; set; }
    public string ImagePath { get; set; }
    public int ProductId { get; set; }

    public virtual Product Product { get; set; }
}
萨扬·帕尔(Sayan Pal)

您可以显式地对one-to-many之间关系进行建模ProductImage如下所示:

public class ProductConfig : EntityTypeConfiguration<Product>
{
    public ProductConfig()
    {
        HasMany(p => p.Images).WithRequired(i => i.Product).HasForeignKey(i => i.ProductId);
    }
}

并在中添加此配置DbContext,如下所示:

public class MyDbContext:DbContext
{
    ...
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new ProductConfig());            
    }
}

关系正确建模后,您可以使用:

var prod = myDbContext.Products.Find(2);

或者

var prod = myDbContext.Products.SingleOrDefault(p => p.ProductId == 2);

或者

var prod = myDbContext.Products.Where(p => p.Id == 2);

获得产品并简单地将其序列化如下:

var iPhone6Json = JsonConvert.SerializeObject(iPhone6, Formatting.Indented);

所述Images相关联的那些被标记虚拟将序列化期间b加载。您不需要执行和显式联接。这里的关键是您需要在处置DbContext实例之前进行序列化,否则延迟加载功能可能无法正常工作,并且可能会遇到一些意外错误。

您还可以另外将该Product属性标记Image为,JsonIgnore以将其排除在序列化之外,并避免引用循环。

[JsonIgnore]
public int ProductId { get; set; }

[JsonIgnore]
public Product Product { get; set; }

然后,JSON您应该具有以下内容:

{  
    "id":"2",
    "ProductName":"iPhone6",
    "Images":[  
       {  
          "Id":"1",
          "ImagePath":"/images/231.jpg"
       },
       {  
          "Id":"2",
          "ImagePath":"/images/432.jpg"
       }
    ]
}

我认为这也符合您的目的。

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Entity Framework ASP.Net MVC 5删除多个记录?

来自分类Dev

C#ASP .NET; 获取登录用户的NetworkCredential对象?

来自分类Dev

在ASP.net MVC中使用Entity Framework创建模型时,如何在单个视图中从两个表调用数据

来自分类Dev

使用ASP.NET MVC 4 + Entity Framework将图像保存到数据库

来自分类Dev

使用Entity Framework和ASP.NET从(很多)结果表中删除记录

来自分类Dev

如何在Asp.Net 5(MVC 6)中使用Entity Framework 6.x

来自分类Dev

使用Entity Framework 6创建计算字段

来自分类Dev

如何使用C#ASP MVC反序列化json字符串

来自分类Dev

如何使用RequestCommand从Asp.Net WebApi中的json(javascript)创建复杂的.Net对象

来自分类Dev

是否可以从.NET中的REST API获取复杂的Entity Framework对象而无需创建ViewModel对象?

来自分类Dev

在ASP.NET Core 1.0中使用Entity Framework 7架设SQL Server视图吗?

来自分类Dev

ASP.Net MVC。如何使用Entity Framework自动保留关系数据?

来自分类Dev

在Entity Framework和ASP.NET MVC中使用模型和httppostedfilebase时发生NullException

来自分类Dev

C#asp net updatepanel导致页面刷新

来自分类Dev

ASP.NET使用Entity Framework显示数据以使用不同的下拉列表

来自分类Dev

如何使用Entity Framework通过ASP.NET Core Web API处理一般查询?

来自分类Dev

如何在C#ASP NET Core中的后台服务内部使用Mediator?

来自分类Dev

使用Entity Framework Core C#反序列化JSON

来自分类Dev

无法在Visual Studio C#ASP内的React应用程序上使用Material-UI。NET核心Web应用程序

来自分类Dev

如何配置Mutlilayer C#.Net Core项目以使用Entity Framework Core?

来自分类Dev

使用ASP.NET MVC,LINQ和Entity Framework从SQL Server 2008切换到MySQL

来自分类Dev

使用Entity Framework的Asp.net GridView搜索

来自分类Dev

如何在ASP.NET 5中将Entity Framework 6与MySQL结合使用?

来自分类Dev

如何首先在ASP.NET MVC中将Identity与Entity Framework数据库一起使用

来自分类Dev

使用c#Asp .net MVC将视频上传到Youtube

来自分类Dev

在ASP.Net Core中使用Entity Framework Core脚手架时出错

来自分类Dev

使用Entity Framework MVC ASP.NET创建具有自定义类型的控制器时出错

来自分类Dev

首先使用Entity Framework代码创建复杂的主键

来自分类Dev

如何使用 ASP.NET Core、Identity Framework 和 Entity Framework 显示特定用户创建的内容

Related 相关文章

  1. 1

    如何使用Entity Framework ASP.Net MVC 5删除多个记录?

  2. 2

    C#ASP .NET; 获取登录用户的NetworkCredential对象?

  3. 3

    在ASP.net MVC中使用Entity Framework创建模型时,如何在单个视图中从两个表调用数据

  4. 4

    使用ASP.NET MVC 4 + Entity Framework将图像保存到数据库

  5. 5

    使用Entity Framework和ASP.NET从(很多)结果表中删除记录

  6. 6

    如何在Asp.Net 5(MVC 6)中使用Entity Framework 6.x

  7. 7

    使用Entity Framework 6创建计算字段

  8. 8

    如何使用C#ASP MVC反序列化json字符串

  9. 9

    如何使用RequestCommand从Asp.Net WebApi中的json(javascript)创建复杂的.Net对象

  10. 10

    是否可以从.NET中的REST API获取复杂的Entity Framework对象而无需创建ViewModel对象?

  11. 11

    在ASP.NET Core 1.0中使用Entity Framework 7架设SQL Server视图吗?

  12. 12

    ASP.Net MVC。如何使用Entity Framework自动保留关系数据?

  13. 13

    在Entity Framework和ASP.NET MVC中使用模型和httppostedfilebase时发生NullException

  14. 14

    C#asp net updatepanel导致页面刷新

  15. 15

    ASP.NET使用Entity Framework显示数据以使用不同的下拉列表

  16. 16

    如何使用Entity Framework通过ASP.NET Core Web API处理一般查询?

  17. 17

    如何在C#ASP NET Core中的后台服务内部使用Mediator?

  18. 18

    使用Entity Framework Core C#反序列化JSON

  19. 19

    无法在Visual Studio C#ASP内的React应用程序上使用Material-UI。NET核心Web应用程序

  20. 20

    如何配置Mutlilayer C#.Net Core项目以使用Entity Framework Core?

  21. 21

    使用ASP.NET MVC,LINQ和Entity Framework从SQL Server 2008切换到MySQL

  22. 22

    使用Entity Framework的Asp.net GridView搜索

  23. 23

    如何在ASP.NET 5中将Entity Framework 6与MySQL结合使用?

  24. 24

    如何首先在ASP.NET MVC中将Identity与Entity Framework数据库一起使用

  25. 25

    使用c#Asp .net MVC将视频上传到Youtube

  26. 26

    在ASP.Net Core中使用Entity Framework Core脚手架时出错

  27. 27

    使用Entity Framework MVC ASP.NET创建具有自定义类型的控制器时出错

  28. 28

    首先使用Entity Framework代码创建复杂的主键

  29. 29

    如何使用 ASP.NET Core、Identity Framework 和 Entity Framework 显示特定用户创建的内容

热门标签

归档