NHibernate映射

NHibernate映射,nhibernate,nhibernate-mapping,linq-to-nhibernate,Nhibernate,Nhibernate Mapping,Linq To Nhibernate,我正在为我未来的项目评估一些orm。对于我的特定目标,我不喜欢EF方法,因为我已经有了我想要持久化的业务对象,并且我想要针对至少1个DBMS(SQL Server除外)。我对telerik的OpenAccess ORM做了一些研究。它看起来非常强大,但学习起来也非常复杂,而且这些文档有些过时,因为它们的示例不适用于最新版本。现在我想试试NHibernate。它看起来很棒,但据我所知,它没有生产就绪的LINQ提供商,这对我来说是一个巨大的缺点。但我想没有它我也能活下去 现在谈谈这个问题。我的项目中

我正在为我未来的项目评估一些orm。对于我的特定目标,我不喜欢EF方法,因为我已经有了我想要持久化的业务对象,并且我想要针对至少1个DBMS(SQL Server除外)。我对telerik的OpenAccess ORM做了一些研究。它看起来非常强大,但学习起来也非常复杂,而且这些文档有些过时,因为它们的示例不适用于最新版本。现在我想试试NHibernate。它看起来很棒,但据我所知,它没有生产就绪的LINQ提供商,这对我来说是一个巨大的缺点。但我想没有它我也能活下去

现在谈谈这个问题。我的项目中有多个程序集,每个程序集包含不同的业务对象。我想创建另一个类似DAL的程序集,它将处理在不同程序集中拆分的所有业务对象的所有CRUD操作。我知道NHibernate需要xml映射,但在我的情况下,我应该将映射xml文件嵌入哪个程序集,DAL程序集中还是包含业务对象的每个程序集中


谢谢

NHibernate 3.0有一个新的查询API,名为“查询结束”,它非常简单


映射文件应放在包含业务逻辑的程序集中。

NHibernate 3.0有一个新的查询API,称为“查询结束”,非常简单


映射文件应该放在包含业务逻辑的程序集中。

在另一个顺序中,我想添加一些您可能会觉得方便的东西。nHibernate确实为类保留了xml映射,但由于我不是这个想法的超级粉丝,我决定四处寻找一些允许我在代码上定义映射的东西,答案是一个简单的项目,名为

在这个项目中,您可以将映射定义为一个类文件,而所有内容都保持为C#代码,从而从一开始就消除了嵌入xml文件的问题

您可以查找Fluent nHibernate的文档,但基本思想如下:

public class CatMap : ClassMap<Cat>
{
  public CatMap()
  {
    Id(x => x.Id);
    Map(x => x.Name)
      .Length(16)
      .Not.Nullable();
    Map(x => x.Sex);
    References(x => x.Mate);
    HasMany(x => x.Kittens);
  }
}
公共类CatMap:ClassMap
{
公共CatMap()
{
Id(x=>x.Id);
映射(x=>x.Name)
.长度(16)
.Not.Nullable();
Map(x=>x.Sex);
参考文献(x=>x.Mate);
有许多(x=>x只小猫);
}
}

我希望我能帮上忙。

另一方面,我想补充一些你可能会觉得方便的东西。nHibernate确实为类保留了xml映射,但由于我不是这个想法的超级粉丝,我决定四处寻找一些允许我在代码上定义映射的东西,答案是一个简单的项目,名为

在这个项目中,您可以将映射定义为一个类文件,而所有内容都保持为C#代码,从而从一开始就消除了嵌入xml文件的问题

您可以查找Fluent nHibernate的文档,但基本思想如下:

public class CatMap : ClassMap<Cat>
{
  public CatMap()
  {
    Id(x => x.Id);
    Map(x => x.Name)
      .Length(16)
      .Not.Nullable();
    Map(x => x.Sex);
    References(x => x.Mate);
    HasMany(x => x.Kittens);
  }
}
公共类CatMap:ClassMap
{
公共CatMap()
{
Id(x=>x.Id);
映射(x=>x.Name)
.长度(16)
.Not.Nullable();
Map(x=>x.Sex);
参考文献(x=>x.Mate);
有许多(x=>x只小猫);
}
}

我希望我能提供帮助。

除了David提到的FluentNHibernate之外,我想指出的是NH3确实有自己的LINQ提供商,现在对于大多数项目来说已经足够成熟了


我在当前的项目中使用FluentNHibernate和LINQ,我对此非常满意。您可以在

下载NH3的最新FluentNHibernate版本。除了David提到的FluentNHibernate之外,我想指出的是,NH3确实有自己的LINQ提供商,现在对于大多数项目来说已经足够成熟了


我在当前的项目中使用FluentNHibernate和LINQ,我对此非常满意。您可以在

下载NH3的最新FluentNHibernate版本,这样我可以在不同的程序集中使用映射文件和实体对象吗?@Davita是的,您可以,我通常将映射文件放在包含数据层的程序集中。谢谢大家。我想我会选择NHibernateSo我可以在不同的程序集中使用映射文件和实体对象吗?@Davita是的,你可以,我通常会将映射文件放在包含数据层的程序集中。谢谢大家。我想我会选择NHibernate+1来提及FluentNHibernate。OP应该好好调查一下。谢谢大卫。我知道fluentapi,但我发现它比使用xml映射要难一些,所以我决定采用老的xml方式。无论如何,谢谢:-)投票支持+1,因为提到FluentNHibernate。OP应该好好调查一下。谢谢大卫。我知道fluentapi,但我发现它比使用xml映射要难一些,所以我决定采用老的xml方式。无论如何,谢谢:-)投票upI我记得3年前Ayende Rahien为nHibernate做的一个老LINQ项目,是一样的吗?对不起,我不知道,这里仍然使用NH2.1!我记得3年前Ayende Rahien为nHibernate做的一个老LINQ项目,是一样的吗?对不起,我不知道,这里仍然使用NH2.1!