Ste*_*aly 5 c# nhibernate fluent-nhibernate
我将从实体框架转到NHibernate.在查看如何创建我的域实体时,我注意到在某些示例中,它们不包含外键关系的列.由于Session该类包含一个Load()方法,因此可以在不使用数据库而不是主键的情况下使用对象.这是NHibernate中构造实体模型时的常规做法.
示例实体
public class BlogPost : Entity
{
public virtual string Name { get; set; }
//Should this be here
public virtual int AuthorID { get; set; }
public virtual Author Author { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
创建实体
BlogPost post = new BlogPost
{
Name = "My first post",
Author = session.Load<Author>(1) //Avoids hitting the database
};
session.Save(post);
Run Code Online (Sandbox Code Playgroud)
- 要么 - -
BlogPost post = new BlogPost
{
Name = "My first post",
AuthorID = 1 //Use the id of the object
};
session.Save(post);
Run Code Online (Sandbox Code Playgroud)
您应该使用完整的实体/对象而不是外键。
外键是数据库概念。当您进行面向对象编程时,它们没有多大意义。在进行 OOP 时,您是将对象组合在一起。在你的例子中, aBlog 有一个Posts. Post 有父母Blog等
实体ID仅用于唯一标识实体。
对象关系映射的全部要点应该是允许您使用 OOP 最佳实践(对象)、数据库最佳实践(关系),而不是混合它们之间的概念(这就是名称中的映射部分所代表的含义)。
一些 ORM 在遵循这一点方面比其他 ORM 更好。提示:NHibernate。
| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |