Fluent NHibernateマッピングに問題があります。問題を回避するためにマッピングをどのように設定する必要があるのかよく分かりません。Fluent NHibernate Mapping - Save Childオブジェクト
私はビジネスオブジェクト(文字通り「ビジネス」)とレビューオブジェクトを持っています。各ビジネスは、UIのページに作成された複数のレビューを持つことができます。次のようなビジネスは、レビューのプロパティです:
public class Business
{
public virtual int BusinessId {get;set;}
public virtual DateTime LastModified {get;set;}
public virtual IList<Review> Reviews {get;set;}
[... more removed for brevity ...]
}
public class Review
{
public virtual int ReviewId {get;set;}
public virtual string ReviewText {get;set;}
public virtual Business Business {get;set;}
[... more removed for brevity ...]
}
次のように私のマッピングは、次のとおりです。
public class ReviewMap : ClassMap<Review>
{
public ReviewMap()
{
WithTable("Reviews");
Id(x => x.ReviewId).TheColumnNameIs("ReviewId").GeneratedBy.Identity();
References(x => x.Business).TheColumnNameIs("BusinessId");
Map(x => x.ReviewText);
[... and so on...]
}
public class BusinessMap : ClassMap<Business>
{
public BusinessMap()
{
WithTable("Businesses");
Id(x => x.BusinessId).TheColumnNameIs("BusinessId").GeneratedBy.Identity();
Map(x => x.Name).TheColumnNameIs("BusinessName");
Map(x => x.LastModified, "LastModifiedOn");
HasMany<Review>(x => x.Reviews)
.Inverse()
.LazyLoad();
[... more removed for brevity ...]
}
}
リポジトリのコードは、私が割り当て、コードで
public void Save(T entity)
{
using (ISession session = GetSession())
using (ITransaction tx = session.BeginTransaction())
{
session.SaveOrUpdate(entity);
tx.Commit();
}
}
ですプロパティをReviewオブジェクトに追加し、リポジトリのSaveメソッドを呼び出します。
問題は、ビジネス自体を更新していないため、保存されるとは思わないということです。私が望むのはレビュー保存です。しかし、コードではビジネスを保存しようとしています。私は "LastModified"プロパティを設定していないので、私は賞賛を受けています。また、私はビジネスではなくREVIEWを保存しています。
これを可能にするためにマッピングをどのように設定する必要がありますか?
これがあなたの質問に答えるならば、答えとしてこれを受け入れるべきです。 – ddc0660
申し訳ありませんが、私は自分の答えを受け入れるために待つ必要があったと正直言って...戻ってそれを修正することを忘れてしまった! – reallyJim