所以我是NHibernate的新手并且遇到了问题。也许有人可以帮助我。 给定具有许多属性的User-class:
public class User
{
public virtual Int64 Id { get; private set; }
public virtual string Firstname { get; set; }
public virtual string Lastname { get; set; }
public virtual string Username { get; set; }
public virtual string Email { get; set; }
...
public virtual string Comment { get; set; }
public virtual UserInfo LastModifiedBy { get; set; }
}
这里有一些表的DDL:
CREATE TABLE USERS
(
"ID" BIGINT NOT NULL ,
"FIRSTNAME" VARCHAR(50) NOT NULL ,
"LASTNAME" VARCHAR(50) NOT NULL ,
"USERNAME" VARCHAR(128) NOT NULL ,
"EMAIL" VARCHAR(128) NOT NULL ,
...
"LASTMODIFIEDBY" BIGINT NOT NULL ,
) IN "USERSPACE1" ;
数据库表格字段'LASTMODIFIEDBY'用于审计目的,来自在插入或更新时执行的用户的Id。这通常是管理员。 因为UI不显示这个Int64而是管理员名称(模式如'Lastname,Firstname')我需要通过自引用表USERS来检索这些值。接下来,User的类型的整个对象对于不需要的字段的数量来说是过度的。因此,有一个类UserInfo,占用空间小得多。
public class UserInfo
{
public Int64 Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string FullnameReverse
{
get { return string.Format("{0}, {1}", Lastname ?? string.Empty, Firstname ?? string.Empty); }
}
}
所以这里开始问题。实际上我不知道如何完成这项任务。我不确定我是否也必须为类UserInfo提供映射,而不仅仅是类User。我想在User-class的映射中将类UserInfo作为Composite-element进行集成。但我不知道如何定义USERS.ID和USERS.LASTMODIFIEDBY表字段之间的映射。 希望我能够清楚地描述我的问题以获得一些提示。非常感谢!
答案 0 :(得分:1)
这看起来像是一个不好的情况或过早的优化。
如果您将LastModifiedBy
定义为User
并使用<many-to-one>
进行映射,是否确实存在任何性能问题?
那应该是你的起点。