0

私は次のテーブルを持っています

エンティティ
ID、名前、カテゴリID
21、 "Blah"、1

EntityCategory(列挙型テーブル)
id、name
1、 "New Blahs"

Entities->categoryidとEntityCategories->idの間にFK関係があります

両方のSubSonicクラスと、Entity
クラスEntity {ID、Name、CategoryName}の対応するModelオブジェクトを生成しました。

カテゴリ名が入力されたModel.Entityタイプを返そうとしています。

public Entity GetEntityByName(string name){
  return new 
    Select(
      Entity.IdColumn,    
      Entity.NameColumn,
      EntityCategory.NameColumn)
   .From(Entity.Schema)
   .InnerJoin(Tables.EntityCategory)
   .Where(Entity.NameColumn).IsEqualTo(name)
   .ExecuteSingle<Model.Entity>();

言うまでもなく、これは機能していません。実際には、Entity.NameがEntityCategoryNameに設定されたModel.Entityを取得します。

4

1 に答える 1

0

SubSonic 3.0 を使用している場合は、プロジェクションでこれを行うことができます。

var result = from e in db.Entities
where e.ID=1
select new Entity{
   ID=e.ID,
   name=e.Name, 
   CategoryName=(CategoryName)e.CategoryID
}

SubSonic 2.x では、読み取り専用の列挙型で部分クラスを拡張して、自分で簡単にできるようにすることをお勧めします。

public partial class Entity{
   public CategoryName{
     return (CategoryName)this.CategoryID;
   }
}
于 2009-04-13T19:49:04.053 に答える