- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 NHibernate 与 RIA 服务和 Silverlight 4 一起使用。我创建 DTO 以通过 RIA 服务传输数据,而不是分发我的域层对象(根据 Martin Fowler 的分布式对象设计第一定律:“不要分发您的对象!” )。 DTO 对象从域层中的五个对应层被展平为两个层。
这是我的问题。在 Silverlight 4 中进行更改后,RIA Services 知道哪些 DTO 对象已被修改,但在服务器端更新代码中,我需要将更改传输回“真实”的域层对象,以便 NHibernate 可以将这些更改应用回数据库。这样做的最佳方法是什么?
由于 DTO 是轻量级的,只包含客户端所需的信息,我显然会 不是 想要在 DTO 中嵌入相应的域对象。
以下是我考虑过的几种可能性:
1) 在 DTO 对象中保存对域对象的引用。只要只有引用被序列化并通过网络发送,而不是整个引用的对象,那么这可能是一种合理的方法。当然,引用在客户端是无效的,因为它们会指向不存在的内存位置,但在行程结束时,它们可以被服务器端使用。 (?)
2) 同上,但只在 DTO 对象中保存对域聚合根的引用。然后使用对象关系遍历来获取其他相关的域对象。
3) 将域对象的 ID 存储在 DTO 中,并使用 NHibernate 的“Get” by ID 或“Load” by ID 功能来检索正确的域对象,以便应用更新。
4) 同上,但只对聚合根使用“Get”或“Load”,然后对所有相关对象使用遍历。
也许以上都不是理想的,有更好的方法......
最佳答案
每当我在 ORM 之上构建访问层时,我通常会继续将实体的任何唯一键放在 DTO 中,以便对其进行跟踪,当然,在添加的情况下还支持 default(T)。
然后,当对象返回到服务器端时,我可以轻松地执行加载,从 DTO 编码更改的值,然后让 session 保存它或执行显式保存。
这将是您的 3/4。
关于silverlight - 如何在 RIA 服务中使用 NHibernate 和 DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495178/
我一直在为初学者阅读 nhibernate 3.0 并阅读了一些常见错误(我犯了一些错误) 我想知道将一个或多个记录设为只读有哪些策略。现在我取回所有行并循环遍历它们,使它们通过 session.Re
我们有一个使用 NHibernate 的相当健壮的系统,我们正在从单个数据库服务器迁移到拥有两台服务器,一台用于管理,另一台用于我们面向公众的网站。这主要是为了让我们可以使用不会影响当前站点的工作流来
我在尝试构建一个时遇到以下错误 session 工厂: PersistenceTests.Can_Map_Orders_To_Database : Failed System.IndexOutOfRa
如果客户有很多订单附加到他们。您将如何使用 NHibernate 延迟加载订单列表。 是不是需要设置映射文件?任何帮助或示例都会很棒。 最佳答案 Chris 的建议是我会怎么做,但是如果您想在运行时执
我正在尝试使用 HQL 对一个简单的查询进行分页,并将总行数作为同一查询的一部分进行检索。 我的查询很简单... var members = UnitOfWork.CurrentSession.Cre
我有旧版数据库,存储的日期表示无日期为9999-21-31, 列Till_Date的类型为DateTime not-null="true"。 在应用程序中,我要构建持久化类,将no-date表示为nu
您可以指定命名空间和程序集以使用 HBM 文件顶部的类型: 您可以在同一个映射文件中使用来自多个程序集/命名空间的类型,如果可以,这样做的语法是什么? 最佳答案 您可以从 HBM 文件的顶部删除默认
如何强制 NHibernate 在多对多集合上执行 RIGHT 外连接或 INNER 连接而不是 LEFT 外连接? 我想这样做的原因是因为过滤应用于集合元素。使用左连接,您将获得与未过滤查询相同的返
我们开始在我的工作场所使用NHibernate,包括从映射生成模式。我们的DBA想要的一件事是主键和外键关系的名称一致。我已经能够设置FK约束名称,但是在的文档中看,它似乎不存在命名主键约束的方法。
我需要NHibernate来执行这样的查询: SELECT * FROM Users ORDER BY Func(FirstName, LastName) Standart NHibernate Or
假设在一个实体中有属性 id、用户名、年龄、地址。现在我只想要 id 和 username 并使用此代码。 投影可以从查询中返回实体列表以外的内容。 var proj = Projections.Pr
我花了很长时间,但我终于让 nHibernate 的 Hello World 工作了。在我做了“延迟加载”之后它起作用了。老实说,我无法告诉您为什么这一切都有效,但确实如此,现在我正在阅读您不需要延迟
假设您有两个类,Person 和 Address。 Person 有一个对 Address 的引用,如下所示: public class Person { public virtual Addre
我在 NHibernate 引用文档 中阅读第 10 章“只读实体”如下: http://nhibernate.info/doc/nh/en/index.html#readonly 但不幸的是我不知道
有谁知道 NHibernate 是否支持从存储过程返回输出参数?我在文档中进行了搜索,但无法真正找到任何可以确认的内容。 最佳答案 我面临同样的问题。 NHibernate 不允许您以这种方式使用存储
简而言之,什么工作得更快: SessionFactory 预编译 XML 配置,或 流畅的NHibernate提供 以编程方式配置? 最佳答案 我个人的经验是,Configuration 对象的构建(
我的域类具有如下所示的集合: private List _foos = new List(); public virtual ReadOnlyCollection Foos { get { retur
当我有一个带有一对多子集合的实体对象时,我需要查询一个特定的子对象,是否有我还没有想出的功能或一些巧妙的模式来避免 NHibernate获取整个子集合? 例子: class Parent {
在我的域中,员工和部门具有一对多的双向关系;为了让子员工同步这个,我有一个“内部”访问字段,用于部门中员工的集合(NHibernate 的 Iesi),否则它将是只读公共(public)的。像这样:
我有一个 nhibernate 自定义类型,我想用 Fluent NHibernate 映射它。 HBM 映射如下所示。 Services.Data.DateConventionTyp
我是一名优秀的程序员,十分优秀!