我很难通过在MVC 5项目中使用外键来了解如何从另一个表中获取名称。我想与我的ShirtSize和Products表有一对多的关系,所以一个尺码有很多产品。
我的产品型号上有此设置
public int Id { get; set; }
public string Name { get; set; }
[DataType(DataType.Currency)]
public decimal Price { get; set; }
public string Description { get; set; }
[Display(Name = "Size")]
public int SizeId { get; set; }
public virtual ShirtSize ShirtSize { get; set; }
[Display(Name = "Image Name")]
public string ImageFileName { get; set; }
这就是我对于ShirtSize模型的看法
public int Id { get; set; }
public string Size { get; set; }
public virtual ICollection<Product> Products { get; set; }
尺寸属性是大中型或小型等尺寸的名称。现在如何使用products表中的ShirtId获取大小?
我尝试执行类似下面代码的操作,但在Include部分内部突出显示红色。
public ViewResult Index()
{
var courses = db.Courses.Include(c => c.Department);
return View(courses.ToList());
}
答案 0 :(得分:2)
顺便说一句,这就是方法......
var sizeId = 2;
var product = db.Products.FirstOrDefault(p => p.SizeId == sizeId);
var size = product.ShirtSize.Size;
但是,如果您考虑一下,每次调用FirstOrDefault
时都可以取回不同的产品(或者根本不需要)。如果您编写了使用该产品的代码,则可能会无意中在您的应用中引入错误。更安全的方法是直接从ShirtSizes
表中获取大小。这样,毫无疑问你的意图是什么。你可以用这种方式写出来......
var sizeId = 2;
var shirtSize = db.ShirtSizes.FirstOrDefault(s => s.SizeId == sizeId);
var size = shirtSize.Size;
答案 1 :(得分:0)
尝试以下
var shirtId = 2;
var product = db.Products.FirstOrDefault(p => p.Id== shirtId);
这里有产品(衬衫)物品 现在您可以通过以下
找到尺寸product.ShirtSize.Size