Web 中代码优先的外键 API
Foreign keys with Code First in a Web API
非常简单的问题,但看起来我正在尝试在两个模型之间实现简单的一对多关系。
到目前为止,我所拥有的是:
一个产品 class :
public class Products
{
public long Id { get; set; }
public long Code { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public Boolean Reviewed { get; set; }
[ForeignKey("BundleId")]
public int BundleId { get; set; }
public virtual Bundles Bundle { get; set; }
}
缺陷 class 看起来像这样:
public class Defects
{
public long Id { get; set; }
public String Description { get; set; }
public String Picture { get; set; }
public DateTime DateCreated { get; set; }
[ForeignKey("ProductId")]
public int ProductId { get; set; }
public Products Product { get; set; }
[ForeignKey("UserId")]
public int UserId { get; set; }
public virtual Users User { get; set; }
}
我认为我不需要在 Products
class 中添加 ICollection
of Defects
因为它是 "simple" 一对一许多关系,此代码足以在 Defects
class 中获取产品 ID(我不需要更多)。
但是,我当然遇到了一个例外:
The property 'ProductId' cannot be configured as a navigation property. The property must be a valid entity type and the property should have a non-abstract getter and setter
我该如何解决这个问题?
我的两个外键可能做错了,但由于我声明了外键的名称,所以我认为它已经足够了。
感谢您的关注。
这就是你们的关系可以提炼出来的。
请注意,ForeignKey 注释应用于具有键名 属性 的导航 属性。
如果你建立一对多的关系 - 那么 ICollection 是绝对必要的。
否则 "many"
public class Products
{
public int Id { get; set; }
public virtual List<Defects> Bundle { get; set; }
}
public class Defects
{
public long Id { get; set; }
public int ProductId { get; set; }
[ForeignKey("ProductId")]
public Products Product { get; set; }
}
FK 也可以应用于 属性 键。但在那种情况下,您必须将相关实例的名称 class 放在那里
public class Defects
{
public long Id { get; set; }
[ForeignKey("Product")]
public int ProductId { get; set; }
public Products Product { get; set; }
}
非常简单的问题,但看起来我正在尝试在两个模型之间实现简单的一对多关系。
到目前为止,我所拥有的是: 一个产品 class :
public class Products
{
public long Id { get; set; }
public long Code { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public Boolean Reviewed { get; set; }
[ForeignKey("BundleId")]
public int BundleId { get; set; }
public virtual Bundles Bundle { get; set; }
}
缺陷 class 看起来像这样:
public class Defects
{
public long Id { get; set; }
public String Description { get; set; }
public String Picture { get; set; }
public DateTime DateCreated { get; set; }
[ForeignKey("ProductId")]
public int ProductId { get; set; }
public Products Product { get; set; }
[ForeignKey("UserId")]
public int UserId { get; set; }
public virtual Users User { get; set; }
}
我认为我不需要在 Products
class 中添加 ICollection
of Defects
因为它是 "simple" 一对一许多关系,此代码足以在 Defects
class 中获取产品 ID(我不需要更多)。
但是,我当然遇到了一个例外:
The property 'ProductId' cannot be configured as a navigation property. The property must be a valid entity type and the property should have a non-abstract getter and setter
我该如何解决这个问题? 我的两个外键可能做错了,但由于我声明了外键的名称,所以我认为它已经足够了。
感谢您的关注。
这就是你们的关系可以提炼出来的。
请注意,ForeignKey 注释应用于具有键名 属性 的导航 属性。
如果你建立一对多的关系 - 那么 ICollection 是绝对必要的。
否则 "many"
public class Products
{
public int Id { get; set; }
public virtual List<Defects> Bundle { get; set; }
}
public class Defects
{
public long Id { get; set; }
public int ProductId { get; set; }
[ForeignKey("ProductId")]
public Products Product { get; set; }
}
FK 也可以应用于 属性 键。但在那种情况下,您必须将相关实例的名称 class 放在那里
public class Defects
{
public long Id { get; set; }
[ForeignKey("Product")]
public int ProductId { get; set; }
public Products Product { get; set; }
}