繁体   English   中英

使用Web API 2一对一关系

[英]One-to-One relationship using Web API 2

我正在尝试使用WebAPI 2 Get方法填充DataGrid。 我有一个User类和一个UserAddress ,它们与它们的代码之间具有一对一的关系,如下所示:

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;
    }

我能够以没有任何关系的方式检索数据,但是以一对一的关系我无法这样做,而且我也不知道问题出在哪里。

如果您要返回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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM