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();
    }
}

如果我查询一些成员对象,我会得到成员,但汽车集合是空的!如果我查询一些汽车,我会得到所有具有正确会员的汽车。但是在会员内部,汽车收藏也是空的!

有没有人知道会发生什么?

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 回答