私はこれを理解することはできません...私はSQLCE4でFluentNhibernateを使用しようとしました..そして私の設定はセッションのために次のようになります:
public class FluentNHibernateFactory
{
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard
.ConnectionString(ConfigurationManager.ConnectionStrings["SqlCeDatabase"].ConnectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationEntity>())
.BuildSessionFactory();
}
public static ISession GetOpenSession()
{
return CreateSessionFactory().OpenSession();
}
}
私のマッピングは次のようになります。
public class ApplicationMap : ClassMap<ApplicationEntity>
{
public ApplicationMap()
{
Table("Applications");
Id(x => x.Id).GeneratedBy.Assigned().Column("id");
Id(x => x.Alias).Column("alias");
Id(x => x.Name).Column("name");
Map(x => x.Created).Column("created");
Map(x => x.CreatedByUser).Column("createdBy");
Map(x => x.Updated).Column("updated");
Map(x => x.UpdatedByUser).Column("updatedBy");
}
}
そして最後に..私のリポジトリは次のようになります..:
public class ApplicationRepository : IRepository<ApplicationEntity>
{
public void Add(ApplicationEntity entity)
{
using (var session = FluentNHibernateFactory.GetOpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(entity);
//TODO: Fix the add functionality
transaction.Commit();
}
}
}
public void Remove(ApplicationEntity entity)
{
throw new NotImplementedException();
}
public void Update(ApplicationEntity entity)
{
throw new NotImplementedException();
}
public IEnumerable<ApplicationEntity> GetAll()
{
using (var session = FluentNHibernateFactory.GetOpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
return session.CreateCriteria<ApplicationEntity>().List<ApplicationEntity>().AsEnumerable<ApplicationEntity>();
}
}
}
public ApplicationEntity GetById(long id)
{
throw new NotImplementedException();
}
}
しかし、データベースにオブジェクトを追加することはできません..Addメソッドに渡されるエンティティオブジェクトには、すべてのプロパティの値があり、それらも有効なプロパティのようです..しかし、テーブルには3つの主キーがあります、それで問題になるのでしょうか?
ちなみに表はこんな感じ。
アプリケーション |
ID | bigint | ヌルでない | 主キー
エイリアス | nvarchar(25) | ヌルでない | 主キー
名前 | nvarchar(100) | ヌルでない | 主キー
作成 | 日時 | ヌルではない
作成者 | bigint | ヌルではない
更新 | 日時 | ヌル
更新者 | bigint | ヌル
ここで何か間違っていると思いますか?私はNHibernateを初めて使用するので、ここで本当に奇妙なことをしていたかもしれません..
取得するエラーは次のとおりです。 ?, ?, ?)]"}
内部例外の場合: {"データ変換に失敗しました。[ OLE DB ステータス値 (既知の場合) = 2 ]"}
表の書き方が悪くてすみません..
前もって感謝します!