流利的nhibernate如何知道要访问哪些表?

时间:2011-11-25 13:22:18

标签: c# .net nhibernate fluent-nhibernate

我阅读了教程 http://wiki.fluentnhibernate.org/Auto_mapping#Getting_started

但我无法理解如何访问表格?

我没有给出任何命名召集,那么映射是如何完成的?

hbm.xml中,有一个声明:

<class name="Cat" table="Cat">  

但是流利的却没有。

3 个答案:

答案 0 :(得分:0)

如果您正在使用ClassMap,请使用Table声明:

  public class ExampleMap : ClassMap<Example>
  {
    public ExampleMap()
    {
        Table("MyExampleTable");
        Id(a => a.Id).GeneratedBy.Identity();
    }
  }

如果您使用的是AutoMapping,请参阅http://wiki.fluentnhibernate.org/Auto_mapping上的文档,了解如何设置替换

答案 1 :(得分:0)

您绝对可以在映射器中指定表名。但是如果你有兴趣知道它是如何自动映射的,那么你需要知道Fluent NHibernate的约定。

阅读有关约定的this章节。

答案 2 :(得分:0)

通过流利,您将在一个班级中映射您的表格。例如:

using FluentNHibernate.Mapping;

namespace Models.Mapping
{
    public class CustomerMap : ClassMap<Customer>
    {
        public CustomerMap()
        {
            Table("Customer");
            Id(customer => customer.Id);
            Map(customer => customer.Name).Column("client_name").Not.Nullable();
            Map(ssc => customer.ssc).Column("social_security_numer");

            References(customer => customer.User);
        }
    }
}

这只是展示如何映射你的表格。你可以看到它非常简单。您将不再使用hbm.xml进行映射,并记得注册您的映射,如:

ISessionFactory SessionFactory = Fluently.Configure(configuration).Mappings(m =>
                          {
                              m.FluentMappings.AddFromAssemblyOf<CustomerMap>();
                          }).BuildSessionFactory();

只是一个简单的例子,你可以在流利的参考资料中找到更多。