Asp .net core WebApi to return Foreign key Id as value

asp.net-core asp.net-web-api c# entity-framework entity-framework-core

Question

net Here I'm working on Asp .net core using Entity Framework Core(version 3.1.2) and i'm using mssql server as my DB

i have two entity class Region and country

Region.cs

[Key]
    public int Id { get; set; }
    [Column(TypeName ="nvarchar(20)")]
    [Required]
    public string Code { get; set; }
    [Column(TypeName = "nvarchar(150)")]
    [Required]
    public string Description { get; set; }
    [Column(TypeName = "Bit")]
    [Required]
    public Boolean Active { get; set; }

Country.cs

[Key]
public int Id { get; set; }

[Required]
public string Code { get; set; }
[Column(TypeName = "nvarchar(150)")]
[Required]
public string Description { get; set; }
[Column(TypeName = "Bit")]
[Required]
public Boolean Active { get; set; }
[Required]
public int RegionId { get; set; }
[ForeignKey("RegionId")]
public virtual Region Region { get; set;}

And my Db context

    public class MasterContext: DbContext
  {
    public MasterContext(DbContextOptions options):  base(options)
    {}
    public DbSet<Region> regions { get; set; }
    public DbSet<country> countries { get; set; }
  }

and my startup.cs

services.AddMvc()
           .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
           .AddNewtonsoftJson(options => {
             var resolver = options.SerializerSettings.ContractResolver;
             if (resolver != null)
               (resolver as DefaultContractResolver).NamingStrategy = null;
           });
  services.AddControllers();
  services.AddDbContext<MasterContext>(options =>
  options.UseSqlServer(Configuration.GetConnectionString("dev")));

    }

connection String in appsettings.json

**"ConnectionStrings": {
"dev": "Server=ADMIN;Database=MASTERS;User Id=vibe;Password=vibe"

}

country controller

// GET: api/countries/5
        [HttpGet("{id}")]
        public async Task<ActionResult<country>> Getcountry(int id)
        {
            var country = await _context.countries.Include(i => i.Region).FirstOrDefaultAsync(i => i.Id == id);

            if (country == null)
            {
                return NotFound();
            }

            return country;
        }

when i get the value by passing the Url(http://localhost:65177/api/regions/10) in the postman tool it returns value like this

what i get

    {
    "Id":10,
    "Code":"inn",
    "Description":"india",
    "Active":true,
    "RegionId":5,
    "Region": {
    "Id":5,
    "Code":"me",
    "Description":"middle east",
    "Active":true
}
    }

And what i'm expecting is this

{
"Id":10,
"Code":"inn",
"Description":"india",
"Active":true,
"RegionId": {
"Id":5,
"Code":"me",
"Description":"middle east",
"Active":true
}
}

pls anyone give me a solution to solve this...thanks in advance.

1
1
3/11/2020 11:03:32 AM

Popular Answer

Use json ignore attribute. For example, [JsonIgnore]

1
3/11/2020 1:39:23 PM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow