【问题标题】:Posting entity-relations to OData Web API将实体关系发布到 OData Web API
【发布时间】:2014-04-30 11:33:27
【问题描述】:

我使用 Entity Framework 6 创建了具有以下模型的 Code First 数据库。

public class CarOwner
{
    public int Id { get; set; }
    public virtual ICollection<Car> Cars { get; set; }
}

public class Car
{
    public int Id { get; set; }
    public string Name { get; set; }

    public int CarOwnerId { get; set; }
    public virtual CarOwner CarOwner { get; set; }
    public virtual CarImage CarImage { get; set; }
}

public class CarImage
{
    public int Id { get; set; }
    public int CarId { get; set; }
    public byte[] Image { get; set; }
}

使用 Visual Studio 2012,我已经自动生成了一个“带有操作的 Web API 2 OData 控制器,使用实体框架”。 此控制器按预期工作,我在项目的这一部分没有错误。

我想在客户端应用程序中使用服务引用来执行以下操作:

var img = new CarImgage {
    Image = .....
};

var car = new Car {
    Name = "Ford Fiesta",
    CarImage = img
};
var cars = new Collection<Car>();
cars.Add(car);

var owner = new CarOwner { Cars = cars }:

我已尝试按照本指南添加新实体,但无济于事:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/calling-an-odata-service-from-a-net-client

我知道可以将“所有者”对象发布到 Web API,因为我可以使用 HttpClient 来做到这一点。

如果确实有可能,我想知道我该怎么做。

【问题讨论】:

    标签: c# asp.net entity-framework ef-code-first odata


    【解决方案1】:

    生成服务引用后,在解决方案资源管理器中,您会发现有 Reference.cs(路径类似于 ProjectName/Service References/Reference.datasvcmap/Reference.cs

    然后在客户端,您可以使用此文件中定义的 CLR 对象。 代码如下:

    YourServiceContainer context = new YourServiceContainer(new Uri("yourServiceRootUri"));
    var img = new CarImgage {
        Image = .....
    };
    
    var car = new Car {
        Name = "Ford Fiesta",
        CarImage = img
    };
    dsc.AddToCars(car);
    dsc.SaveChanges();
    

    【讨论】:

      猜你喜欢
      • 2014-07-20
      • 1970-01-01
      • 2013-12-06
      • 2013-04-19
      • 2015-02-14
      • 2018-11-15
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      相关资源
      最近更新 更多