1

次のエンティティをそのままマッピングしています。

public class PersonEntity
{
    public virtual string PersonId { get; set; }

    public virtual String Salutation { get; set; }
    public virtual String FirstName { get; set; }
    public virtual String LastName { get; set; }
    public virtual DateTime Birthdate { get; set; }
}

public class PersonMap : ClassMapping<PersonEntity>
{
    public PersonMap()
    {
        //ComponentAsId(i => i.Key, map => map.Property(p => p.PersonId, m => m.Type(NHibernateUtil.AnsiString)));

        Id(i => i.PersonId, map => map.Type(???)));
        Property(i => i.Salutation);
        Property(i => i.FirstName);
        Property(i => i.LastName);
        Property(i => i.Birthdate);
    }
}

コメント アウトされたコードでわかるように、コンポーネントを Id として使用する場合、NHibernateUtil を使用して型を AnsiString として設定できます。ただし、プレーンな Id マッピングで何をすべきかわかりません。

を使用してみnew NHibernate.Type.AnsiStringType()ましたが、コンストラクターが定義されていないことに不満があります。

アイデアはありますか?

4

3 に答える 3

4

AnsiStringType を IIdentifierType に明示的にキャストし、長さプロパティも設定する必要がありました。

       Id(x => x.Id,
       m =>
       {
           m.Generator(Generators.Assigned);
           m.Type((IIdentifierType)TypeFactory.GetAnsiStringType(16));
           m.Length(16);
       });
于 2012-11-06T17:13:47.433 に答える
1

使用するNHibernate.Type.TypeFactory.GetAnsiStringType(someLength)

于 2012-11-01T19:55:37.283 に答える