私は1対1マッピングを使用する際に問題があります。私はインターネットを検索し、多くの解決策を見つけましたが、満足できるものはありませんでした。ほとんどの例では、子インスタンスに親インスタンスを格納するオーバーヘッドが発生します。NHibernate One-To-One
外部キー制約の関係を持つ子クラスで親Idだけを使用したいが、子インスタンスに親インスタンスを保持したくない。
データベースからレコードをロードしようとすると、「指定された識別子の行が存在しません[AssemblyName。]」という例外がスローされます。しかし、表Bのレコードは適切に存在します。
この問題の解決方法はありますか?
クラス構造:
class A {
public virtual string Id {get;set;}
public virtual B B {get;set;} // properties...... }
class B { public virtual string Id {get;set;} // properties......
public virtual string ParentId { get;set;} // class A Id }
データベース構造:
CREATE TABLE [A](
[Id] [nvarchar](45) PRIMARY KEY
) ON [PRIMARY]
CREATE TABLE [B](
[Id] [nvarchar](45) PRIMARY KEY,
[ParentId] [nvarchar](45) NOT NULL
) ON [PRIMARY]
マッピング:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="A,AssemblyName" table="A" lazy="true">
<id name="Id" column="Id" type="string">
<generator class="assigned"/>
</id>
<one-to-one name="_B" cascade="all" fetch="join" foreign-key="None" constrained="true" class="B"/>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="B,AssemblyName" table="B" lazy="true">
<id name="Id" column="Id" type="string"> <generator class="assigned"/> </id>
<property name="_Name" column="Name"/> </class>
</hibernate-mapping>
また、これまでの記事で述べたように、これは不満足な解決策の1つです。とにかく、ありがとう。 – ni3a
これまでの投稿は? –