我的颜色类是
python: can't open file 'setup.py': [Errno 2] No such file or directory
我的产品类是
public partial class Colors
{
public Colors()
{
this.Products = new HashSet<Products>();
}
public int ColorID { get; set; }
public string Hex { get; set; }
public string ColorName { get; set; }
public int ProductCount { get; set; }
public virtual ICollection<Products> Products { get; set; }
}
如何使用linq获取产品颜色并将其设置为public partial class Products
{
public Products()
{
this.Colors = new HashSet<Colors>();
}
public int ProductID { get; set; }
public string Name { get; set; }
public virtual ICollection<Colors> Colors { get; set; }
}
属性?
答案 0 :(得分:4)
您已注意到此类是自动生成的。并且可能,您不想更改它的实现,然后您可以为Colors
类内容添加扩展方法并删除ProductCount
属性:
public partial class Colors
{
public Colors()
{
this.Products = new HashSet<Products>();
}
public int ColorID { get; set; }
public string Hex { get; set; }
public string ColorName { get; set; }
public virtual ICollection<Products> Products { get; set; }
}
public static class EntityExtensions
{
public static int GetProductCount(this Colors colors)
{
return colors.Products.Count();
}
}
然后将其用作:
var productCOunt = colors.GetProductCount();
P.S: 我建议将Colors
实体名称更改为Color
。您可以在创建实体时在VS中选择此选项。
答案 1 :(得分:2)
您应该Products
非虚拟,计算ProductCount
或完全删除ProductCount
。换句话说,ProductCount
不应该是可手动设置的属性,而Products
是虚拟的。
我会选择删除ProductCount
,因为您图书馆的用户可以随时
myColor.Products.Count
而不是
myColor.ProductCount
如果不希望这样做,请在没有setter的情况下创建一个计算属性:
public int ProductCount => Products.Count; // C# 6
或者如果您使用的是旧语法
public int ProductCount { get { return Products.Count; } }
注意: Color
引用具有该颜色的所有产品是非常奇怪的,因为您正在建模的关系采用相反的方式(即&#34; a产品有颜色&#34;而不是相反)。