Отображения классов Nhibernate - PullRequest
0 голосов
/ 01 октября 2010

Вопрос: у меня есть приведенное ниже отображение nHibernate через атрибуты.

Теперь я хочу создать T_lsDomains с префиксом динамической таблицы.Например, TBL_lsDomains или просто lsDomains.

Можно ли как-то сделать это с атрибутами?Так как они определены во время компиляции и должны быть постоянными?

Есть ли способ сделать это?

Или FluentNhibernate может сделать это?

using System;
using System.Collections.Generic;
using System.Text;

namespace nhDBapi.Tables
{

    [NHibernate.Mapping.Attributes.Class(Name = "nhDBapi.Tables.clsDomains, nhDBapi", Table = "T_lsDomains")]
    public class clsDomains
    {
        void clsDOmains()
        { 
        }


        [NHibernate.Mapping.Attributes.Id(Name = "DomainID", Column = "DM_DomainID", TypeType = typeof(string))]
        public string DomainID = "abc"; // nvarchar(100) NULL DEFAULT (''),

        [NHibernate.Mapping.Attributes.Property(Name = "DomainName", Column = "DM_DomainName", Type = "String", Length = 100)]
        string DomainName = ""; // nvarchar(100) NULL DEFAULT (''),

        [NHibernate.Mapping.Attributes.Property(Name = "Description", Column = "DM_Description", Type = "String", Length = 100)]
        string Description = ""; // nvarchar(100) NULL DEFAULT (''),
    }
}

1 Ответ

2 голосов
/ 03 октября 2010

Этого легко достичь, используя Свободное соглашение NHibernate .:

public class TableNameConvention : IClassConvention
{
  public bool Accept(IClassMap classMap)
  {
    return true; // apply to all mappings
  }

  public void Apply(IClassMap classMap)
  {
    // will produce table names like: TBL_Customer, TBL_Product
    classMap.WithTable("TBL_" + classMap.EntityType.Name);
  }
}
...