gpt4 book ai didi

c# - 尝试将对象与 EntityFramework 关联时出现无效列名错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:43 26 4
gpt4 key购买 nike

Entity Framework 给我带来了一些麻烦。

这是我的表格:

产品

Products Table

相关产品

RelatedProducts Table

还有我的数据库上下文(无论如何,它的一部分)...

ApplicationContext.cs

public class ApplicationContext : DbContext
{
public ApplicationContext() : base("DefaultConnection")
{
}

public DbSet<Product> Products { get; set; }
public DbSet<RelatedProduct> RelatedProducts { get; set; }
}

还有模型...

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; }
}

我想做什么

像这样循环遍历相关产品列表:

<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>

问题

我一直收到这个错误L

{"Invalid column name 'Product_ID'.\r\nInvalid column name 'Product_ID'.\r\nInvalid column name 'Product_ID'."}

有什么想法吗?

最佳答案

如果 Product.RelatedProductsRelatedProduct.OwnerRelatedProduct.Product 的反向导航属性,您必须告诉 EF。两者都是可能且有效的,EF 无法自行决定。

带有数据注释的解决方案(假设 OwnerRelatedProducts 的倒数):

[InverseProperty("RelatedProducts")]
public virtual Product Owner { get; set; }

public virtual Product Product { get; set; }

或使用 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);

可能只有 Fluent API 解决方案可以工作,因为您还需要为其中一种关系禁用级联删除,而这对于数据注释是不可能的。

关于c# - 尝试将对象与 EntityFramework 关联时出现无效列名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com