Ошибка Nhibernate «Недопустимое имя столбца», когда столбец существует

Привет, у меня есть объект с именем document и один с именем user

Document

    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual User User { get; set; }

Documentmap

    public DocumentMap()
    {
        Map(x => x.Name);
        Map(x => x.Description);
        References(x => x.User);
    }

User

    public virtual string UserId { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string MiddleInitial { get; set; }
    public virtual string LastName { get; set; }
    private readonly IList<Document> _documents = new List<Document>();
    public virtual IEnumerable<Document> Documents { get { return _documents; } }
    public virtual void Remove(Document document)
    {
        _documents.Remove(document);
    }
    public virtual void Add(Document document)
    {
        if (!document.IsNew() && _documents.Contains(document)) return;
        _documents.Add(document);
    }

    Map(x => x.UserId);
        Map(x => x.FirstName);
        Map(x => x.MiddleInitial);
        Map(x => x.LastName);
        HasMany(x => x.Documents).Access.CamelCaseField(Prefix.Underscore); 

Довольно просто (они наследуются от базового класса с такими вещами, как createddate, modifieddate и т. Д.)

когда я пытаюсь получить всю документацию по идентификатору пользователя, я получаю это

Неверное имя столбца «UserId».

столбец определенно находится в таблице. В нем также перечислены некоторые элементы базового класса как отсутствующие.

Я беру sql и пропускаю его в диспетчере запросов и получаю intellisense, что это недопустимые столбцы. Я запускаю его, и он отлично работает. Более того, существует множество других объектов, использующих эти базовые классы без проблем.

Я пробовал различные вещи, такие как явное отображение имени ключа, имени столбца с использованием инверсии и т.д., но безрезультатно. Не знаю, что делать. Спасибо, Raif

// РЕДАКТИРОВАТЬ согласно запросу, извините, это так многословно. база данных создается с помощью nhibernate создать схему

Документ

public class Document : Entity
{
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual DocumentCategory DocumentCategory { get; set; }
    [ValueOf(typeof(DocumentFileType))]
    public virtual string FileType { get; set; }
    public virtual string FileUrl { get; set; }
    public virtual int? Pages { get; set; }
    public virtual decimal? Size { get; set; }
    public virtual User User { get; set; }
}

public class DocumentMap : EntityMap<Document>
{
    public DocumentMap()
    {
        Map(x => x.Name);
        Map(x => x.Description);
        Map(x => x.FileUrl);
        Map(x => x.Pages);
        Map(x => x.Size);
        Map(x => x.FileType);
        References(x => x.DocumentCategory);
        References(x => x.User);
    }
}

Сущность

public class Entity : IGridEnabledClass, IEquatable<Entity>
{
    public virtual int EntityId { get; set; }
    public virtual DateTime? CreateDate { get; set; }
    public virtual DateTime? ChangeDate { get; set; }
    public virtual int ChangedBy { get; set; }
    public virtual bool Archived { get; set; }

    public virtual bool IsNew()
    {
        return EntityId == 0;
    }

Пользователь

 public class User : DomainEntity, IUser
{
    public virtual string UserId { get; set; }
    [ValidateNonEmpty]
    public virtual string FirstName { get; set; }
    public virtual string MiddleInitial { get; set; }
    [ValidateNonEmpty]
    public virtual string LastName { get; set; }
    public virtual string Title { get; set; }
    public virtual DateTime? BirthDate { get; set; }
    public virtual string StartPage { get; set; }
    public virtual UserLoginInfo UserLoginInfo { get; set; }
    public virtual UserStatus UserStatus { get; set; }
    public virtual Photo HeadShot { get; set; }
    private readonly IList<Document> _documents = new List<Document>();
    public virtual IEnumerable<Document> Documents { get { return _documents; } }
    public virtual void Remove(Document document)
    {
        _documents.Remove(document);
    }
    public virtual void Add(Document document)
    {
        if (!document.IsNew() && _documents.Contains(document)) return;
        _documents.Add(document);
    }
    several more collections

public class UserMap : DomainEntityMap<User>
{
    public UserMap()
    {
        Map(x => x.UserId);
        Map(x => x.FirstName);
        Map(x => x.MiddleInitial);
        Map(x => x.LastName);
        Map(x => x.BirthDate);
        Map(x => x.StartPage);
        References(x => x.UserStatus);
        References(x => x.UserLoginInfo);
        References(x => x.HeadShot);
        HasMany(x => x.Documents).Access.CamelCaseField(Prefix.Underscore); 

таблицы базы данных создают из сценария выберите пункт меню в Management Studio

  SELECT [EntityId]
  ,[CreateDate]
  ,[ChangeDate]
  ,[ChangedBy]
  ,[Archived]
  ,[Name]
  ,[Description]
  ,[FileUrl]
  ,[Pages]
  ,[Size]
  ,[FileType]
  ,[DocumentCategoryId]
  ,[UserId]
  FROM [DecisionCriticalSuite].[dbo].[Document]
 GO


  SELECT [EntityId]
  ,[CreateDate]
  ,[ChangeDate]
  ,[ChangedBy]
  ,[Archived]
  ,[TenantId]
  ,[OrgId]
  ,[UserId]
  ,[FirstName]
  ,[MiddleInitial]
  ,[LastName]
  ,[BirthDate]
  ,[StartPage]
  ,[UserStatusId]
  ,[UserLoginInfoId]
  ,[HeadShotId]
  ,[OrganizationId]
  FROM [DecisionCriticalSuite].[dbo].[User]
  GO

ошибка из nhprof

ERROR: 
Invalid column name 'UserId'.
Invalid column name 'UserId'.
Invalid column name 'EntityId'.
Invalid column name 'EntityId'.
Invalid column name 'CreateDate'.
Invalid column name 'ChangeDate'.
Invalid column name 'ChangedBy'.
Invalid column name 'Archived'.
Invalid column name 'FileType'.
Invalid column name 'UserId'.Could not execute query: SELECT documents0_.UserId as UserId1_, documents0_.EntityId as EntityId1_, documents0_.EntityId as EntityId49_0_, documents0_.CreateDate as CreateDate49_0_, documents0_.ChangeDate as ChangeDate49_0_, documents0_.ChangedBy as ChangedBy49_0_, documents0_.Archived as Archived49_0_, documents0_.Name as Name49_0_, documents0_.Description as Descript7_49_0_, documents0_.FileUrl as FileUrl49_0_, documents0_.Pages as Pages49_0_, documents0_.Size as Size49_0_, documents0_.FileType as FileType49_0_, documents0_.DocumentCategoryId as Documen12_49_0_, documents0_.UserId as UserId49_0_ FROM [Document] documents0_ WHERE           documents0_.UserId=@p0
5
задан Raif 9 August 2011 в 17:27
поделиться