【发布时间】:2019-10-23 09:54:41
【问题描述】:
我有一张桌子[dbo].[Product] 喜欢
ProductID | Description | OtherProductVariantID
其中OtherProductVariantID 是同一张表 和对应的产品实体的ProductID
public class Product
{
public int ProductID {get; set;}
public string Description{get; set;}
public int? OtherProductVariantID {get; set;}
public virtual Product VariantProduct {get; set;}
public virtual ICollection<Product> VariantProducts { get; set; }
}
它是通过 Fluent-API 配置的,如下所示:
modelBuilder.Entity<Product>(entity =>
{
entity.HasOne(d => d.VariantProduct)
.WithMany(p => p.VariantProducts)
.HasForeignKey(d => d.OtherProductVariant)
.HasConstraintName("FK_Product_OtherProductVariant");
});
[人类语言]
我想要的是加载一个产品实体
var product = Context.Product
.Include(p => p.VariantProduct)
.FirstOrDefault(p => p.ProductID == 12345);
以便我的 VariantProduct 可用于进一步处理,但它始终为空。
我做错了什么还是这不可能?
提前致谢!
【问题讨论】:
-
您的
OtherProductVariant实体中有什么? -
VariantProduct是父产品实体,VariantProducts是您的子产品集合。检查您的数据库表以确认 .使用如下方式检查两者: var product = _context.Products .Include(p => p.VariantProducts).Include(p => p.VariantProduct) .FirstOrDefault(p => p.ProductID ==12345);
标签: c# .net-core ef-code-first asp.net-core-2.0 ef-core-2.0