我在通过 linq 语言加入两个实体时遇到问题。
我有模型类别:
public class Category : DbContext
{
[Key, Column(Order = 0),DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CategoryId { get; set; }
Key, Column(Order = 1)]
public int ShopId { get; set; }
public string Name {get;set;}
public virtual ICollection<Parameter> Parameter { get; set; }
}
和模型参数
public class Parameter : DbContext
{
[Key, Column(Order = 0),DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ParamId { get; set;}
[Key, Column(Order = 1)]
public int ShopId { get; set;}
public string Name {get; set;}
public string Value {get;set;}
}
这种关系是一对多的,所以一个类别可以有 0...n 个参数。
更新: 当然,这种关系是多对多的。这就是为什么 Parameter 在模型中没有 CategoryId 属性的原因。
我首先使用代码和迁移工具来更新数据库;
在数据库 MSSQL Express 中有 3 个表。类别、类别参数和参数。表 CategoryParameter 是自动创建的,我没有此表的模型。
创建具有多个参数的新类别工作正常。所有 3 个表都包含有效数据。
所以我现在的问题:
我正在尝试加载一个类别的所有参数。该命令如下所示:
var parameters = from c in db.Categories
join p in db.Parameters
on new { ??? , c.ShopId } equals new { ??? , p.ShopId }
where c.ShopId == userProfile.ShopId && c.CategoryId == id
select new { ParamId = p.ParamId, Name = p.Name };
所以我的问题是,如果类中没有可用的属性,如何加入这些表。
非常感谢您的帮助!