Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate-向实体添加注释属性(使用连接存储)_C#_Nhibernate_Orm_Fluent Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# NHibernate-向实体添加注释属性(使用连接存储)

C# NHibernate-向实体添加注释属性(使用连接存储),c#,nhibernate,orm,fluent-nhibernate,nhibernate-mapping,C#,Nhibernate,Orm,Fluent Nhibernate,Nhibernate Mapping,我有一个系统,在这个系统中,我需要能够在客户和位置模型上添加注释字段,但我无法触及现有表的模式。但是,我可以添加注释表。我简化了这个例子。我们希望能够将此注释添加到更多的模型中,这些模型都使用Guid作为Id 该现有系统是第三方系统,具有自己的数据访问层 我们刚刚开始进入NHibernate。据我所知,它看起来像一个连接图 例如: public class Customer { public Guid Id { get; private set; } public string

我有一个系统,在这个系统中,我需要能够在客户和位置模型上添加注释字段,但我无法触及现有表的模式。但是,我可以添加注释表。我简化了这个例子。我们希望能够将此注释添加到更多的模型中,这些模型都使用Guid作为Id

该现有系统是第三方系统,具有自己的数据访问层

我们刚刚开始进入NHibernate。据我所知,它看起来像一个连接图

例如:

public class Customer 
{
    public Guid Id { get; private set; }
    public string FirstName { get; private set; }
    public string LastName { get; private set; }
    public string Comment { get; set; }
}    

public class Location
{
    public Guid Id { get; private set; }
    public string Name { get; private set; }
    public string Address { get; private set; }
    public string Comment { get; set; }
}
注意:我们确信我们希望评论是一对一的关系,而不是一对多的关系


如何配置一个单独的表来捕获Id和注释?我在寻找合适的术语。我正在寻找XML的例子,如果可能的话,还有Fluent配置。我希望将所有对象的注释保留在一个表中。谢谢。

如果您无法更改数据库架构,您的选择将非常有限。 也许,您可以使用映射来完成。 请看这里:


尝试在所有实体的映射中使用相同的列名。

如果可以在现有表中添加注释表和相应的键列,则fluent mapping的外观可能不同

public class CustomerMap : ClassMap<Customer>{
  public CustomerMap(){
        //...other columns mappings

        References(c=>c.Comment).Column("CommentId");
  }
}

并对其他实体重复此操作。您可以在那里设置所需的fetch modejoin和其他操作。我已经写了这么多对一的引用,但是如果你需要一对一的映射,这没有什么大区别

你知道有没有办法通过配置告诉系统主实体是不可变的,但是连接是可变的?@brun:你是什么意思?如果na实体是不可变的,那么它的任何部分都不可能发生变异。我不想对客户部分进行变异。注释属性可以。我只是在那些属性上强制使用私有集,就像我在上面的C中所显示的那样吗?@brun:如果你不想让属性不被更新,你可以在映射中将它设置为update=false。我不确定我是否得到了你需要的东西一对一映射是什么样子的?将引用更改为HasOne