linq 言語で 2 つのエンティティを結合する際に問題があります。
私はモデルのカテゴリを持っています:
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;}
}
関係は 1 対多であるため、1 つのカテゴリは 0...n パラメータを持つことができます。
更新: 確かに、関係は多対多です。これが、モデルに Parameter に CategoryId 属性がない理由です。
データベースを更新するためにコードを最初に使用し、移行ツールを使用しています。
データベース MSSQL Express には 3 つのテーブルがあります。カテゴリ、CategoryParameters、およびパラメータ。テーブル CategoryParameter は自動的に作成されましたが、このテーブルのモデルはありません。
複数のパラメータが正常に機能する新しいカテゴリを作成します。3 つのテーブルすべてに有効なデータが含まれています。
だから今私の問題:
1 つのカテゴリのすべてのパラメータをロードしようとしています。コマンドは次のようになります。
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 };
だから私の問題は、クラスに使用可能な属性がない場合、これらのテーブルに参加する方法です。
助けてくれてありがとう!