C# - 流利的NHibernate的映射问题

有没有办法避免的明确Id的功能NHibernate映射?

我希望它以某种方式自动生成的条目ID,这样我就不必介绍了其作为类的一部分。

public class HeyMapping { public String Name { get; set; } public DateTime Timestamp { get; set; } } public class HeyMapping : ClassMap<HeyMapping> { public HeyMapping() { Not.LazyLoad(); // I'm not particularly sure how this line works, but // it fails the mapping unit test. CompositeId().KeyProperty(x => x.Name); Map(x => x.Name).Not.Nullable().Length(64); Map(x => x.Timestamp).Not.Nullable(); } }

--------------解决方案-------------

如果你想在你的实体没有ID,你还是要映射一个ID,这样NHibernate的知道数据库列使用。

您可以致电

Id<TColumnDataType>("column_name");

请注意,您会放弃一些NHibernate的功能(特别是级联更新和调用的能力SaveOrUpdate() ),发生在数据库方面的性能损失具有数据库唯一的身份(我相信NHibernate的将不得不作出额外的比较查询)。

我通常会承认这一点,并允许Id在我的领域类的一持续的关注,所以我这样做:

public class HeyMapping
{
protected internal int Id { get; set; } // persistence concern

public virtual String Name { get; set; }
public virtual DateTime Timestamp { get; set; }
}

我知道你可能不想这样做; 我只是让你知道,有一个权衡。

创建一个基类,所有的映射实体的继承,那么id属性添加到您的基类。

分类:C# 时间:2012-01-01 人气:0
本文关键词: C#,功能NHibernate
分享到:

相关文章

  • 指定选择-前更新与功能NHibernate? 2012-01-10

    我想指定使用流利的NHibernate的一个ClassMap的"选择 - 前更新"属性,但我没有找到太多,显示了做正确的方式是在网络上. 有谁知道如何与功能NHibernate实现这一目标? 谢谢! --------------解决方案------------- SelectBeforeUpdate()在你的ClassMap

  • 如何使用功能NHibernate映射一个自引用文件夹层次? 2012-01-13

    我得到下面的类代表的文件夹层次结构: public class Folder { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual Folder ParentFolder { get; set; } public virtual ICollection<Folder> SubFolders { get; set; } } 换句话说,每个Folder可以属于一个P

  • 功能NHibernate:如何使用的Int64为ID? 2012-01-19

    我是很新的ORM,NHibernate和FluentNH的整个概念,我试图完成一些看起来很简单... 我想要检索的对象中有的类定义为Int64的一个领域. 这个字段将是ID,如在图文件中定义. 当试图从数据库中检索记录,NHibernate的返回以下错误信息:"错误类型提供ID预计:System.Int32中,得到了System.Int64" 我有一个很简单的对象: public class Holiday { public virtual Int64 HolidayID { get;

  • 测绘人员和员工在功能NHibernate 2012-01-22

    我该如何映射下使用功能NHibernate(实体,映射类等)查询,员工ID存储在标识符表. 人表包含员工信息和非员工信息. SELECT p.Id,p.FirstName,p.LastName FROM Person p UNION ALL SELECT e.Id, e.FirstName, e.LastName FROM Employee e INNER JOIN标识我对(e.Id = i.value) INNER JOIN类型t上(i.typeid = t.id和i.typeName ='雇

  • 功能NHibernate继承映射类型 2012-01-24

    我是新的功能NHibernate,迄今为止我设法让我的工作映射为exept继承的一部分. 有没有人谁可以帮我完成映射? 我已simplefied代码尽可能. 谢谢! 我的数据库: CREATE TABLE [User] ( UserID INT NOT NULL IDENTITY(1,1), Type CHAR(1) NOT NULL, Email VARCHAR(255) NOT NULL, PRIMARY KEY(UserID) ); CREATE TABLE [Student] ( Use

  • 如何启用LazyLoad在功能NHibernate? 2012-01-25

    我测试功能NHibernate与罗斯文数据库. 现在,我已经创建了员工和EmployeeMap类. 源代码如下图所示. 一流的员工 public class Employee { public virtual int EmployeeID { get; private set; } public virtual string LastName { get; set; } public virtual string FirstName { get; set; } public virtual st

  • 选择N个随机行与功能NHibernate 2012-01-26

    我如何检索使用功能NHibernate N个随机实体? 所需的查询: SELECT TOP 5 * FROM MyTable ORDER BY newid() 我希望能够使用LINQ的回购的这一点,但我不知道结果会是最佳的. 我不熟悉的HQL. --------------解决方案------------- SQL Server特定的解决方案 凡Word是随机实体: IQuery q = _unitOfWork.CurrentSession .CreateQuery("from Word ord

  • 仅限于查询性能与功能NHibernate 2012-02-01

    我怎么也找不到在Ayende的博客中描述NHibernate的功能的工作原理与功能NHibernate. 据我了解,我可以映射伪字段,它的价值是任何HQL查询结果. 它是否正确? 怎么这个功能可以用流利的NHibernate的使用呢? 我试图谷歌,但未果. 代码样本或它们的链接将非常感激. --------------解决方案------------- 根据此门票它的工作原理: http://code.google.com/p/fluent-nhibernate/issues/detail?id

  • NHibernate的3功能NHibernate的学习曲线? 2012-02-12

    我来自世界各地的3 NHibernate的学习曲线是非常巨大的听到. 它被认为是巨大的从哪个角度? 你认为需要的学习依赖于场景中使用它? 例如:如果我只想一些应用程序,它作用于3个实体,只在寻找基本的CRUD. 是否有必要了解整个概念背后NH? 想知道有超过你的答案,这一些说明用户体验. 编辑:你建议使用NH在实体框架4的? (如果你尝试都) 谢谢. --------------解决方案------------- NHibernate的的确确有leaening曲线,但一切都取决于你的背景是什么.

  • 不知道如何使用功能NHibernate从自定义查询的对象上的属性 2012-02-16

    我试图映射的结构如下: public class Tag { public Guid Id {get;set;} public DateTime ActivatedDate {get;set;} } public class History { public Guid Id {get;set;} public TypeEnum Type {get;set;} public Guid ContentID {get;set;} public DateTime HistoryDate {get;set

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.473 (s). 10 q(s)