Nhibernate错误';无效的列名';当列确实存在时

Nhibernate错误';无效的列名';当列确实存在时,nhibernate,fluent-nhibernate,mapping,Nhibernate,Fluent Nhibernate,Mapping,嗨,我有一个叫做文档的对象和一个叫做用户的对象 文件 public virtual string Name { get; set; } public virtual string Description { get; set; } public virtual User User { get; set; } public class Document : Entity { public virtual string Name { get; set; }

嗨,我有一个叫做文档的对象和一个叫做用户的对象

文件

    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual User User { get; set; }
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 DocumentMap()
    {
        Map(x => x.Name);
        Map(x => x.Description);
        References(x => x.User);
    }
使用者

来自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

确保nhibernate查询的数据库与您在sql management studio中查询的数据库相同。

我刚刚遇到了相同的问题,因为我已将Entity1.Entity2映射为Entity3


因此,当加入时,它会尝试使用Entity3中的属性,就像它存在于Entity2上一样。

DocumentMap中是否有UserId列?也许你应该发布数据库表的外观和NHibernate生成的查询。我可以发布所有这些内容,因为我删掉了很多内容。希望这不会令人讨厌,只显示数据库表中的相关列。您还没有回答我的第一个问题。您确定它正在sql management studio中针对同一个数据库运行该查询吗?天哪,有人在另一个web.config中进行了检查。后面疼得厉害。有没有办法从网上删除这些内容?
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); 
  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
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