Исключение отображения NHibernate: ассоциация из таблицы dbo.AccountGroup ссылается на не отображенный класс: System.String - PullRequest
6 голосов
/ 01 декабря 2009

Я получаю эту ошибку:

Ассоциация из таблицы dbo.AccountGroup ссылается на несопоставленный класс: System.String

Это моя сущность:

public class AccountGroup
{
    public virtual int Id { get; private set; }
    public virtual string Name { get; set; }
    public virtual string Parent { get; set; }
    public virtual string Description { get; set; }
    public virtual IList<Account> Accounts { get; set; }

    public AccountGroup()
    {
        this.Accounts = new List<Account>();
    }
}

public class Account
{
    public virtual int Id { get; private set; }
    public virtual string Code { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual int Category { get; set; }
    public virtual AccountGroup Group { get; set; }
    public virtual IList<LedgerEntry> LedgerEntries { get; set; }

    public Account()
    {
        this.LedgerEntries = new List<LedgerEntry>();
    }
}

Это мое отображение:

    public AccountGroupMap()
    {
        Table("dbo.AccountGroup");
        Id(x => x.Id)
            .Column("Id");
        Map(x => x.Name);
        References(x => x.Parent)
            .Column("Parent");
        Map(x => x.Description);
        HasMany(x => x.Accounts)
            .KeyColumn("GroupId")
            .Inverse()
            .Cascade.All();
    }
}

    public AccountMap()
    {
        Table("dbo.Account");
        Id(x => x.Id)
            .Column("Id");
        Map(x => x.Code);
        Map(x => x.Name);
        Map(x => x.Description);
        Map(x => x.Category);
        References(x => x.Group)
            .Column("AccountGroupId");
        HasMany(x => x.LedgerEntries)
            .KeyColumn("AccountId")
            .Inverse()
            .Cascade.All();
    }

Вот мои таблицы:

CREATE TABLE AccountGroup ( Id int ПЕРВИЧНЫЙ КЛЮЧ, Имя varchar (20), Родительский int, Описание варчар (20) )

CREATE TABLE Account ( Id int ПЕРВИЧНЫЙ КЛЮЧ, Код varchar (30), Имя varchar (20), Описание варчар (20), Категория int, AccountGroupId int, КЛЮЧЕВОЙ КЛЮЧ (AccountGroupId) ССЫЛКИ AccountGroup (Id) )

1 Ответ

15 голосов
/ 01 декабря 2009

У вас есть

References(x => x.Parent)
        .Column("Parent");

Когда родитель определен как

public virtual string Parent { get; set; }

Нельзя ссылаться на строку (если это не элемент коллекции)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...