如何使用Id MVC 5从另一个表中获取名称?

时间:2014-12-09 05:39:53

标签: asp.net-mvc database asp.net-mvc-5 code-first

我很难通过在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());
}

2 个答案:

答案 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