エンティティをマッピングするのにFluent NHibernateを使用していますが、結果セットを得るためにリポジトリを取得する際に問題が発生しています。コンソールでは、SQLは表示されませんが、他のリポジトリは表示されます。私はそれがマッピングのためだと感じているが、理由を伝えることはできない。テーブル名には、このレポと他のものとの唯一の違いの1つであるアンダースコアが含まれています。私の質問は、SQLが実行されない原因になる可能性がありますか?NHibernateがSQLを実行しない理由は何ですか?
これは私の設定です。
エンティティ:
public class Org
{
public virtual int ID { get; set; }
public virtual string IndividualName { get; set; }
public virtual string GroupName { get; set; }
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
}
マッピング:
public class OrgMap : ClassMap<Org>
{
public OrgMap()
{
Table(@"Org_Updates"); // Also tried Table("Org_Updates");
Map(x => x.ID);
Map(x => x.IndividualName);
Map(x => x.GroupName);
Map(x => x.AddressLine1, "PhysicalLocationAddress");
Map(x => x.AddressLine2, "PLAddr2");
レポジトリ:
public class OrgRepository : RepositoryBase<Org>, IOrgRepository
{
public IList<Org>GetTop50()
{
var query = All().AsList();
return query;
}
}
RepositoryBase:
public class OrgRepositoryBase<T> : RepositoryBase<T> where T : class
{
public OrgRepositoryBase()
{
var registry = ServiceLocator.Current.GetInstance<EventListenerRegistry>();
registry.RegisterListenerForType<T>(GetType(), EventType.Save);
registry.RegisterListenerForType<T>(GetType(), EventType.Delete);
}
protected override ISession GetSession()
{
return UnitOfWork.Current.GetSessionFromContext<ISession>(typeof (OrgModel));
}
protected override Type ModelType
{
get { return typeof (OrgModel); }
}
}
}
前にも述べたように、他のリポジトリは他のエントリー/マッピングを使用しています。私はこのリポジトリを使用して、それが実装するエンティティ/マッピングを交換することができ、それが動作します。私はそれがhteマッピングのためだと確信していますが、どの部分を伝えることはできません。私はテーブル名とカラム名をチェックしました。ヘルプ
その主キーをマップするべきではありません... – dotjoe
は、生成されたSQLはありますか? –
コンソールにSQLが表示されることはありません。他の人にはrepos、私はこのリポジトリ内の別のエンティティを使用する場合、それはなります。 – Brandon