我首先尝试将 awsome EF5 与代码一起使用 - 我需要在其中创建一个包含额外字段的多对多表。
我有一个产品表、订单表,并且需要一个包含“尺寸”字段的订单中的产品表。
我所做的是创建一个新类“ProductOrder”,作为它们之间的连接表,并进行引用。
它在创建新订单时有效,但在获取订单时无效 - 它无法获取连接的订单(插入后存在于数据库中)。
想法为什么? :)
我的类(class)是:
public class Order
{
public int ID { get; set; }
...
public ICollection<ProductOrder> Products { get; set; }
public Order()
{
Products = new HashSet<ProductOrder>();
}
}
public class Product
{
public int ID { get; set; }
public ICollection<ProductOrder> Orders { get; set; }
}
public class ProductOrder
{
public int ID { get; set; }
public int ProductID { get; set; }
public int OrderID { get; set; }
public int Size { get; set; }
[ForeignKey("OrderID")]
public Order order { get; set; }
[ForeignKey("ProductID")]
public Product product { get; set; }
}
并在 onModelCreating 中
modelBuilder.Entity<Order>()
.HasMany(p => p.Products)
.WithRequired(o => o.order)
.HasForeignKey(o => o.OrderID);
modelBuilder.Entity<Product>()
.HasMany(o => o.Orders)
.WithRequired(p => p.product)
.HasForeignKey(p => p.ProductID);
最佳答案
您的导航属性需要是虚拟的
关于c# - EF5 代码优先 - 具有额外字段的多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13804701/