C#fluent nhibernate

C#fluent nhibernate,c#,fluent-nhibernate,C#,Fluent Nhibernate,Fluent NHibernate是否有自动映射实体的简单方法 假设我有一些类,如下面的一个和相应的类映射: public sealed class Hello { public String Name { get; set; } public DateTime Timestamp { get; set; } } public class HelloMapping : ClassMap<Hello> { public HelloMapping() {

Fluent NHibernate
是否有自动映射实体的简单方法

假设我有一些类,如下面的一个和相应的类映射:

public sealed class Hello
{
    public String Name { get; set; }
    public DateTime Timestamp { get; set; }
}

public class HelloMapping : ClassMap<Hello>
{
    public HelloMapping()
    {
        Not.LazyLoad();
        // Some Id here
        Map(x => x.Name).Not.Nullable().Length(64);
        Map(x => x.Timestamp).Not.Nullable();
    }
}
公共密封类你好
{
公共字符串名称{get;set;}
公共日期时间时间戳{get;set;}
}
公共类HelloMapping:ClassMap
{
公共HelloMapping()
{
不是。懒汉();
//这里有身份证吗
Map(x=>x.Name).Not.Nullable().Length(64);
Map(x=>x.Timestamp).Not.Nullable();
}
}
那么,
Fluent NHibernate
是否有类似于“添加每个映射实体,如
Hello


如果没有,让NHibernate使用我提供的映射的最简单方法是什么?

这取决于您所说的“喜欢”是什么意思

您是指同一名称空间中的所有实体吗?那你就可以了

public class MyConfiguration : DefaultAutomappingConfiguration {
    public override bool ShouldMap(Type type) {
        return type.Namespace == typeof(Hello).Namespace;
    }
}
无论你的意思是什么,你都可以设定一个惯例来实现你想要实现的目标。请参阅。

简短回答:。您可以使用FluentNH中内置的对象和基本约定来映射不需要太多自定义行为的对象


您还可以使用继承来定义在大多数或所有类中具有公共元素的映射。sayhello是定义Id、Name和Timestamp的基类。您可以定义此基类的映射,然后直接从它派生以生成其他对象的映射,或者可以为应存储在公共表结构中的对象定义JoinedSubclass映射(通常是因为它们是基类的不同类型,如CheckingAccount、SavingsAccount和MoneyMarketAccount都是具有基本相似数据结构的不同类型的银行账户).

如果我禁用延迟加载,那么属性就不必是虚拟的,这是真的吗?因为我想在这种情况下,不会生成延迟加载代理,并且只访问属性。还是我弄错了?(只想知道:)@Yippie Kai Yay:我没有发现你禁用了延迟加载;你是100%正确的。