我有两个通过一对多关系关联的类。一个类别可以有多个产品,一个产品只能有一个类别。
Models / Category.cs:
namespace Projeto.Models
{
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get ; set; }
public ICollection<CategoryCategory> CategoryParent { get; set; }
public ICollection<CategoryCategory> CategoryChild { get; set; }
}
}
Models / Product.cs:
namespace Projeto.Models
{
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public virtual Category Category { get; set; }
}
当我执行POST或PUT尝试更新给定产品的“类别”时,返回以下错误:
请求正文(HttpPut):
{
"productId": 1,
"name": "testing",
"category": 1
}
响应:
{
"category": [
"Error converting value 1 to type 'Projeto.Models.Category'. Path 'category', line 4, position 15."
]
}
我已经尝试过'虚拟'数据类型的多种组合,我已经看到它可以解决此问题,但是永远无法修复该错误并使CRUD操作按预期运行。我也尝试过[ForeignKey]数据注解,再次没有运气:
public int CategoryMetaID;
[ForeignKey("CategoryMetaID")]
public virtual Category Category { get; set; }
诚然,我对C#,ASP.NET MVC或实体框架本身不了解很多,所以这可能是一个新手错误。但是,我设法建立了一个可以发布和更新多对多关系(产品具有产品)的有效API,但似乎无法解决这个多对多外键关系问题。
任何启发将不胜感激。 预先感谢!
答案 0 :(得分:0)
很明显,在下面
{
"productId": 1,
"name": "testing",
"category": 1
}
“类别”:1 无法绑定到类别
的对象public virtual Category Category { get; set; }
因此,要纠正此错误,您必须知道Web api使用json fomatter将传入的对象解析为C#POCO对象。这是Json.Net库
因此您可以使用以下标签将这个属性标记为忽略
[JsonIgnore]
public virtual Category Category { get; set; }
在产品类上放置错误的方法,巫婆是外键,并将其添加到类别类中
更改产品类别并添加
public int CategoryId { get; set; }
[JsonIgnore]
public virtual Category Category { get; set; }
更改类别类并添加此
[ForeignKey("CategoryId")]
public virtual ICollection<Product> Products { get ; set; }
我认为这会对您有所帮助。请尝试