0

次のドメインクラスを作成しました。

public class Car
{
    public virtual int Id { get; set; }
    public virtual string Registration { get; set; }
    public virtual User ResponsibleContact { get; set; }

    protected Car()
    {}

    public Fahrzeug(User responsibleContact, string registration)
    {
        ResponsibleContact = responsibleContact;
        Registration = registration;

        ResponsibleContact.Cars.Add(this);
    }
}

public class User
{
    public virtual int Id { get; set; }
    public virtual byte[] EncryptedUsername { get; set; }
    public virtual byte[] EncryptedPassword { get; set; }

    public virtual IList<Car> Cars { get; private set; }

    public virtual string Username
    {
        get
        {
            var decrypter = UnityContainerProvider.GetInstance().UnityContainer.Resolve<IRijndaelCrypting>();
            return decrypter.DecryptString(EncryptedUsername);
        }
    }

    protected User()
    { }

    public User(byte[] encryptedUser, byte[] encryptedPassword)
    {
        Cars = new List<Car>();
        EncryptedUsername = encryptedUser;
        EncryptedPassword = encryptedPassword;
    }
}

およびマッピングクラス:

public class CarMap : ClassMap<Car>
{
    public CarMap()
    {
        Id(c => c.Id).GeneratedBy.Native();
        Map(c => c.Registration);

        References(c => c.ResponsibleContact).Not.Nullable();
    }
}

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(st => st.Id).GeneratedBy.Native();
        Map(st => st.EncryptedUsername).Column("Username");
        Map(st => st.EncryptedPassword).Column("Password");
        HasMany(st => st.Cars).Inverse().AsBag();
    }
}

いくつかのMemberオブジェクトをクエリすると、メンバーが取得されますが、carsコレクションは空です。いくつかの車を照会すると、適切なメンバーを持つすべての車を取得しました。しかし、メンバー内では、車のコレクションも空です!

何が起こり得るかについての考えを持っている人はいますか?

4

1 に答える 1

1

コレクションの外部キー列と参照が同じであることを確認する必要があります。そうでない場合、不一致があります。

References(c => c.ResponsibleContact, "ResponsibleContact_id").Not.Nullable();

HasMany(st => st.Cars).Inverse().KeyColumn("ResponsibleContact_id");
于 2013-01-08T09:27:20.353 に答える