c# - Invalid Column Name Error When Trying to Associate Objects with EntityFramework -
the entity framework giving me trouble.
here tables:
products

related products

and db context (part of it, anyway)...
applicationcontext.cs
public class applicationcontext : dbcontext { public applicationcontext() : base("defaultconnection") { } public dbset<product> products { get; set; } public dbset<relatedproduct> relatedproducts { get; set; } } and models...
product.cs
public class product { public int id { get; set; } public string manufacturer { get; set; } public string model { get; set; } public string partnumber { get; set; } public int categoryid { get; set; } public string description { get; set; } public decimal price { get; set; } public virtual icollection<relatedproduct> relatedproducts { get; set; } } relatedproduct.cs
public class relatedproduct { public int id { get; set; } public int ownerid { get; set; } public int productid { get; set; } public virtual product owner { get; set; } public virtual product product { get; set; } } what trying do
loop through list of related products this:
<ul class="activity"> @foreach (var related in @model.relatedproducts) { <li> <i class="fa fa-chevron-right red"></i> <strong>@related.product.manufacturer:</strong> @related.product.model </li> } </ul> the problem
i keep getting errorl
{"invalid column name 'product_id'.\r\ninvalid column name 'product_id'.\r\ninvalid column name 'product_id'."} any ideas?
you must tell ef if product.relatedproducts inverse navigation property of relatedproduct.owner or of relatedproduct.product. both possible , valid , ef can't decide on own.
solution data annotations (assuming owner inverse of relatedproducts):
[inverseproperty("relatedproducts")] public virtual product owner { get; set; } public virtual product product { get; set; } or fluent api:
modelbuilder.entity<relatedproduct>() .hasrequired(r => r.owner) .withmany(p => p.relatedproducts) .hasforeignkey(r => r.ownerid); modelbuilder.entity<relatedproduct>() .hasrequired(r => r.product) .withmany() .hasforeignkey(r => r.productid) .willcascadeondelete(false); probably fluent api solution work because need disable cascading delete 1 of relationships isn't possible data annotations.
Comments
Post a Comment