我正在尝试使用 Fluent API 在 Entity Framework 和我的 SQL Server 中建立关系。这是我插入的方式:
CREATE TABLE Product (
id INT PRIMARY KEY NOT NULL IDENTITY(1,1),
name VARCHAR(255)
);
CREATE TABLE OrderLine (
id INT PRIMARY KEY NOT NULL IDENTITY(1,1),
productId INT NOT NULL,
FOREIGN KEY (productId) REFERENCES Product(id)
);
现在,product
有很多orderLine
s,但不知道它们,也不需要知道它们。例如,我们不需要选择单个产品并计算订单数量。这是它的外观:
public class Product {
public int id { get; set; }
public string name { get; set; }
public ICollection<OrderLine> orderLines { get; set; } //not needed but we'll have it anyway
}
public class OrderLine {
public int id { get; set; }
public int productId { get; set; }
public Product product { get; set; }
}
根据entityframeworktutorial.net这应该可以工作:
modelBuilder.Entity<Product>()
.HasMany<OrderLine>(s => s.orderLines)
.WithRequired(s => s.product)
.HasForeignKey(s => s.productId);
但是,product
当我尝试将其从数据库中取出时,它只是 null。这不是一对多的关系吗?我不太确定我哪里出错了。
我不确定这是否是整个问题,因为那里没有那么多信息,但是为了延迟加载(看起来您正在尝试),导航属性必须像这样标记为虚拟...
public virtual Product product { get; set; }
否则 EF 的代理无法包装它们并执行其操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句