Nhibernate 应为System.String,获得System.Guid

Nhibernate 应为System.String,获得System.Guid,nhibernate,fluent-nhibernate,guid,s#arp-architecture,Nhibernate,Fluent Nhibernate,Guid,S#arp Architecture,我希望有一个非常简单的解释,为什么我得到这个错误 我使用的是S#arpaticture 1.6。在64位Windows 7上安装 以下代码的第3行给出了错误: {“提供的id类型错误。应为:System.String,Get System.Guid”}System.Exception{NHibernate.TypeMismatchException} 支持信息 表(SQL Server 2008) 实体定义 public class Category : EntityWithTypedId<

我希望有一个非常简单的解释,为什么我得到这个错误

我使用的是S#arpaticture 1.6。在64位Windows 7上安装

以下代码的第3行给出了错误:

{“提供的id类型错误。应为:System.String,Get System.Guid”}System.Exception{NHibernate.TypeMismatchException}

支持信息

表(SQL Server 2008)

实体定义

public class Category : EntityWithTypedId<Guid>
公共类类别:EntityWithTypedId
流畅映射

public void Override(AutoMapping<Category> mapping)
    {
        mapping.Table("MasterCategories");

        mapping.Id(x => x.Id).Column("masterCategoryId");
        mapping.Map(x => x.Number).Column("categoryNumber");

        mapping.References(x => x.Organization)
            .Column("organizationId")
            .Cascade.All();
    }
public void覆盖(自动映射)
{
映射表(“主类别”);
mapping.Id(x=>x.Id).Column(“masterCategoryId”);
Map(x=>x.Number).Column(“categoryNumber”);
mapping.References(x=>x.Organization)
.列(“组织ID”)
.Cascade.All();
}
存储库界面

public interface ICategoryRepository : IRepositoryWithTypedId<Category,Guid>
{
}
公共接口ICategoryRepository:IRepositoryWithTypedId { } 存储库

public class CategoryRepository : 
             RepositoryWithTypedId<Category,Guid>, 
             ICategoryRepository
{ }   
公共类类别报告:
有类型的repository,
ICategoryRepository
{ }   

我认为您的映射需要如下所示:

public void Override(AutoMapping<Category> mapping)
{
    mapping.Table("MasterCategories");
    mapping.Id(x => x.Id).Column("masterCategoryId").GeneratedBy.Guid();
    mapping.Map(x => x.Number).Column("categoryNumber");

    mapping.References(x => x.Organization)
            .Column("organizationId")
            .Cascade.All();
}
public void覆盖(自动映射)
{
映射表(“主类别”);
mapping.Id(x=>x.Id).Column(“masterCategoryId”).GeneratedBy.Guid();
Map(x=>x.Number).Column(“categoryNumber”);
mapping.References(x=>x.Organization)
.列(“组织ID”)
.Cascade.All();
}

您能获取由Fluent生成的xml吗?Chris,谢谢您的回答,但仅将generatedBy更改为Guid似乎不会影响将类型传递给NHibernate的方式。当我在所有适当的位置将标识类型更改为string时,Get命令就会起作用。我现在正在进行保存,需要设置GenerateBy。
public class CategoryRepository : 
             RepositoryWithTypedId<Category,Guid>, 
             ICategoryRepository
{ }   
public void Override(AutoMapping<Category> mapping)
{
    mapping.Table("MasterCategories");
    mapping.Id(x => x.Id).Column("masterCategoryId").GeneratedBy.Guid();
    mapping.Map(x => x.Number).Column("categoryNumber");

    mapping.References(x => x.Organization)
            .Column("organizationId")
            .Cascade.All();
}