2015-08-03 19 views
0

我想用WebAPI 2填充DataGrid 2 获取方法。我有一个用户类和UserAddress CALSS有一到一个他们和他们的代码之间关系去如下:使用Web API的一对一关系2

public partial class User 
{ 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public string UserType { get; set; } 

    public virtual UserAddress UserAddress { get; set; } 
} 

public partial class UserAddress 
{ 
    public int UserId { get; set; } 
    public string UserAddress1 { get; set; } 

    public virtual User User { get; set; } 
} 

在我的客户端的代码去如下:

using (var client = new HttpClient()) 
     { 
      client.BaseAddress = new Uri(baseAddress); 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

      //HTTP Get 
      HttpResponseMessage response = await client.GetAsync("api/Users"); 
      if (response.IsSuccessStatusCode) 
      { 
       var users = response.Content.ReadAsAsync<IEnumerable<User>>().Result; 
       grdList.ItemsSource = users; 
      } 
      else 
      { 
       MessageBox.Show(response.ReasonPhrase); 
      } 
     } 

Controller类的代码如下:

// GET: api/Users 
    public IQueryable<User> GetUsers() 
    { 
     return db.Users; 
    } 

我能够在没有任何关系的情况下检索数据,但存在一对一的关系我无法这样做,我无法理解问题出在哪里。

+1

你的意思是,在你的客户端代码的User.UserAddress为空? – Disappointed

+0

没有它的价值。我已经使用post方法输入了值 – Sameel

+0

我个人并不理解你的问题。 – Disappointed

回答

0

它可能是,如果你正在返回的Json请参见下面的链接 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

具体涉及到处理通知的对象引用和配置JsonMediaTypeFormatter部分循环引用问题

VAR JSON = GlobalConfiguration .Configuration.Formatters.JsonFormatter; json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All;

我想知道的另外一个部分是,如果你需要执行linq返回地址的急切加载?

回报db.users.Include(P => p.address)