C# 创建Web API 2的良好实践&;基于EF的系统
我正在创建一个基于实体框架的WebAPI2应用程序。我的问题是关于创建基于Web API 2和EF的系统所涉及的良好实践 假设我有类C# 创建Web API 2的良好实践&;基于EF的系统,c#,entity-framework,asp.net-web-api2,C#,Entity Framework,Asp.net Web Api2,我正在创建一个基于实体框架的WebAPI2应用程序。我的问题是关于创建基于Web API 2和EF的系统所涉及的良好实践 假设我有类付款包含类地址 public class Payment() { public string Id { get; set; } public string Name { get; set; } public decimal Amount { get; set; } public Address PaymentAddress{ get;
付款
包含类地址
public class Payment()
{
public string Id { get; set; }
public string Name { get; set; }
public decimal Amount { get; set; }
public Address PaymentAddress{ get; set; }
}
public class Address ()
{
public string StreetName{ get; set; }
public string City{ get; set; }
}
问题1:
我的Web API是否应该允许从端点PUT/payments更改地址
(我的意思是更改地址
的属性而不是整个对象),称为解决方案1
问题2:
或者,看跌/付款应该只更新付款
的简单属性,而不更新地址
属性?在这个场景中,地址
属性可以通过端点PUT/payments/{paymentId}/Address(称为解决方案2)来更改吗
问题3:
目前,我已经实现了解决方案1,但我无法为更新了地址
属性的支付
更新正确设置上下文。我必须手动更改地址的EF状态值
。如果解决方案2能解决我的问题
问题4
默认情况下,会自动定义EF一对多关系,如我的示例中所示。但我可以使用ForeignKey属性标记列作为外键。为什么这个解决方案更好?他有什么帮助吗
public class Payment()
{
public string Id { get; set; }
public string Name { get; set; }
public decimal Amount { get; set; }
public int AddressId{ get; set; }
[ForeignKey("AddressId")]
public Address PaymentAddress{ get; set; }
}
如果是多个问题,你可能会得到更好的回答。如果是多个问题,你可能会得到更好的回答。