我正在创建一个基于Entity Framework的Web API 2应用程序。我的问题是关于创建Web API 2&基于EF的系统。
假设我的课程Payment
包含课程Address
。
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 / payment(我的意思是更改Address
的属性而不是整个对象)更改Address
,称为解决方案1
问题2:
或者PUT /付款应该只更新Payment
没有Address
属性的简单属性?在这种情况下,Address
属性可能会被端点PUT / payments / {paymentId} /地址(称为解决方案2)更改?
问题3:
目前我已经实施了解决方案1,但我在使用更新的Payment
属性为Address
更新正确设置上下文时遇到问题。我必须手动更改Address
的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; }
}