我想创建一个自定义映射标准,这样我就不必为项目中的所有新类创建 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支持使用约定和覆盖的自动映射。
从原始答案复制的代码映射链接已不再可用
关于c# - NHibernate 以编程方式映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333985/