我不确定如何在EF 4.1 Code First
中映射以下表格,以及需要代表这些表格的对象。如何检索产品规格列表?
目前我只有一个Product
类。
Products Table:
Id
Name
IsActive
ProductSpecification Table:
ProductId
SpecificationId
Specifications Table:
Id
Name
IsActive
ProductSpecifications
是一个关联表。我的上下文类中还定义了以下内容:
public DbSet<Product> Products { get; set; }
编辑
请查看我更新后的原帖。我更改了产品和规格表的Id。
在我的上下文类中,我有以下内容:
public DbSet<Product> Products { get; set; }
public DbSet<Specification> Specifications { get; set; }
在我的代码库中,我有以下内容:
public Product GetById(int id)
{
return db.Products
.Include("Specifications")
.SingleOrDefault(x => x.Id == id);
}
我这里展示的是我的产品类
(部分代码):
public class Product : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public ICollection<Specification> Specifications { get; set; }
}
我的规范类
:
public class Specification : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public ICollection<Product> Products { get; set; }
}
这是我从Slauma的答案中采用的所有内容。 我没有像他说的那样手动进行映射,但首先需要了解以下内容:
考虑到上面的我的类和表,EF 4.1命名约定确切地说明它如何处理关联表?我之所以问这个问题,是因为在我的GetById方法中会出现以下错误:
Invalid object name 'dbo.SpecificationProducts'.
编辑2
我忘记提到以下内容了 :) 一个产品可以有一个规格高度的值。对于这个高度,我需要指定一个值。比如100英寸。因此,我修改了ProductSpecifications表,添加了一个称为SpecificationValue
的值列,该列将包含值100英寸。我应该如何修改代码以检索这个值呢?我需要在我的视图上显示它。