c# - NHibernate 以编程方式映射

标签 c# nhibernate

我想创建一个自定义映射标准,这样我就不必为项目中的所有新类创建 map.cs 文件。

public class Person
{
    public int PersonID { get; set; }
    public string Name { get; set; }
}

通常我会这样:

public class PersonMap : ClassMapping<Person>
{
    public PersonMap()
    {
        Table("Person");

        Id(p => p.PersonID, map => 
        {
            map.Column("PersonID");
            map.Generator(Generators.Identity);
        });

        Property(p => p.Name, map => map.Column("Name"));
    }
}

我想使用反射根据某些标准动态创建这些映射。

public class GenericDAL<T> where T : class, new()
{
    public GenericDAL() 
    {
        Configuration hConfig = new Configuration();
        hConfig.DatabaseIntegration(c =>
        {
            c.ConnectionStringName = "myConnectionStringName";
            c.Dialect<MsSql2012Dialect>();
        });

        ModelMapper mapper = new ModelMapper();
        //Dynamic Mapping here

        ISessionFactory _sessionFactory = hConfig.BuildSessionFactory();
    }
}

我不知道如何从我的 T 创建一个新的 ClassMapping,我该怎么做?

最佳答案

@SteveLillis 已经在评论中回答了这个问题,已经有解决方案。

NHibernate 中的 MappingByCode(见下文)和 FluentNHibernate支持使用约定和覆盖的自动映射。

从原始答案复制的代码映射链接已不再可用

  1. First impressions
  2. Naming convention resembling Fluent
  3. Property
  4. Component
  5. ManyToOne
  6. inheritance
  7. dynamic component
  8. Set and Bag
  9. OneToMany and other collection-based relation types
  10. concurrency
  11. OneToOne
  12. Join
  13. Any
  14. List, Array, IdBag
  15. Map
  16. Id, NaturalId
  17. composite identifiers
  18. entity-level mappings
  19. the summary

关于c# - NHibernate 以编程方式映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333985/

相关文章:

nhibernate - 流畅的 NHibernate 自动映射 : How to custom subclass table name and key column name?

c# - .NET c# 如何使用 linq2db 批量插入?

C#多态性问题

Linq to NHibernate 和 Dynamic LINQ - 查询缓存不工作

caching - 使用 NHibernate.Caches.Redis 时,锁的超时值应该是多少?

nhibernate - 验证 block 与 Nhibernate.Validator

c# - 如何创建或设置具有最大值的 JodaTime DateTime 对象?

c# - 在 C# 中以逗号分隔的字符串转换数据表列值

c# - 在 datagridview winforms 中隐藏行的快速方法

c# - NHibernate:如何将查询与 anD 条件结合起来?