Свободно ID карты - PullRequest
       1

Свободно ID карты

1 голос
/ 10 февраля 2012

У меня возникла следующая проблема, когда я попытался сопоставить свои классы

 Stack trace:
 Inner exception message: could not resolve property: Project_ID of: Messenia.Data.Models.Project

, вот моя конфигурация

  private StaticHibernate () {
            new NHibernate.ByteCode.Castle.ProxyFactoryFactory ();
            SessionFactory = Fluently.Configure ()
                 .Database (MySQLConfiguration.Standard
                 .ConnectionString ("database=messenia;server=localhost;uid=root;pwd=root"))
                 .ExposeConfiguration (c => c.Properties.Add ("hbm2ddl.keywords", "none"))
                 .Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<Entity>(new EntityAutoMappingConfiguration())

                                                                        .IgnoreBase<Entity>()
                                                                        .UseOverridesFromAssemblyOf<Entity>()
                                                                        .Conventions.Add(typeof(PrimaryKeyNamePlusId))))                                                                        .BuildSessionFactory ();

и:

 public class EntityAutoMappingConfiguration : DefaultAutomappingConfiguration
    {
        public override bool ShouldMap(Type type)
        {
            return type.GetInterfaces().Contains(typeof(IPersistable));
        }


    }

и:

public class PrimaryKeyNamePlusId : IIdConvention
    {
        public void Apply(IIdentityInstance instance)
        {
            instance.Column(instance.EntityType.Name + "_ID");
        }
    }

Проект класса не содержит свойства Project_Id, но содержит идентификатор проп., Так почему я получаю эту ошибку?Благодарю .Может ли кто-нибудь помочь мне решить проблему?

1 Ответ

0 голосов
/ 10 февраля 2012

Это предположение, потому что я всегда находил обработку идентификатора по умолчанию в FNH вполне удовлетворительной, но ...

Я думаю, что ваш класс PrimaryKeyNamePlusId говорит FNH ожидать всех свойств идентификатора в вашемсущности должны быть в форме _ID, но вы говорите, что свойство ID вашей сущности Project просто называется «Id», поэтому FNH не может его найти.

Вы можете проверить это, изменив имя свойства в Project, например

    public virtual Guid Project_ID { get;  protected set; }

и посмотрите, исчезнет ли ошибка.

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