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