小编Hel*_*Sam的帖子

停止延迟加载或跳过在NHibernate中加载属性?代理无法通过WCF序列化

考虑我有父,子关系类和映射.我正在使用NHibernate从数据库中读取对象,并打算使用WCF通过线路发送对象.

目标

  • 为了读取父对象,我想有选择地在不同的执行路径上决定何时加载子对象.因为我不想阅读超过我需要的东西.
  • 那些部分加载的对象必须能够通过WCF发送.当我的意思是我没有加载它,双方都不会访问这样的属性.

问题

  • 当通过WCF发送这样的部分加载的对象时,由于这些属性被标记为[DataContract],它不能被序列化,因为属性是延迟加载代理而不是真正的已知类型.

我想要存档的内容,或者我能想到的解决方案

  • lazy=falselazy=true不起作用.前者将急切地获取所有关系,后者将创建一个代理.但我不想要任何东西 - 一个null是最好的.
  • 我不需要延迟加载.我希望得到一个null我不想获取的引用.null,但不仅仅是代理.这将使WCF满意,并浪费更少的时间来构建延迟加载代理.
    我可以拥有一个null代理工厂吗?
    -要么-
  • 或者让WCF忽略那些代理而不是真实的属性.我尝试了IDataContractSurrogate解决方案,但只传递了父级GetObjectToSerialize,我从未观察到代理被传递GetObjectToSerialize,没有机会取消代理它.

编辑

阅读评论后,更多在网上冲浪......

在我看来,DTO会将计算的主要部分转移到服务器端.但对于我正在开发的项目,50%的时间客户端比服务器"更智能",服务器更像是一个带有验证和验证的数据存储.虽然我同意服务器不是很愚蠢 - 我必须决定何时获取额外的引用,而DTO将使这一点非常明确.

也许我应该忍受痛苦.之前我不知道http://automapper.codeplex.com/,这激励我多一点痛苦.

另一方面,我发现http://trentacular.com/2009/08/how-to-use-nhibernate-lazy-initializing-proxies-with-web-services-or-wcf/,这似乎与IDataContractSurrogate.GetObjectToSerialize.

c# nhibernate wcf lazy-loading

9
推荐指数
1
解决办法
4971
查看次数

NHibernate似乎没有批量插入PostgreSQL

我正在使用NHibernate与PostgreSQL数据库连接.

背景

我做了一些简单的测试......似乎需要2秒才能坚持300条记录.我有一个具有相同功能的Perl程序,但是发出直接SQL,只占70%的时间.我不确定这是否是预期的.我认为C#/ NHibernate会更快或至少相提并论.

问题

我的一个观察是(show_sql打开),NHibernate发出INSERT几百次,而不是进行处理多行的批量INSERT.请注意我自己分配主键,而不是使用"本机"生成器.

这是预期的吗?反正我是否可以让它发出批量INSERT语句?在我看来,这可能是我可以加速表现的领域之一.

postgresql nhibernate insert bulk

6
推荐指数
2
解决办法
2265
查看次数

MySQL:插入被外键引用行的更新阻止

让我用一个 SQL 示例来开始我的问题。

这是表设置:

  1. 创建表xy. 与y.xx.id
  2. 将一行插入x(id=1)。

START TRANSACTION;
CREATE TABLE `x` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `value` INT(11) NOT NULL,
    PRIMARY KEY (`id`)
)  ENGINE=INNODB;
CREATE TABLE `y` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `x_id` INT(11) NOT NULL,
    `value` INT(11) NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `fk_x` FOREIGN KEY (`x_id`)
        REFERENCES `x` (`id`)
)  ENGINE=INNODB;

INSERT INTO x values (1,123456);
COMMIT;
Run Code Online (Sandbox Code Playgroud)

现在启动一个事务 (Trx A) 来更新 中的行x。 …

mysql innodb foreign-keys rowlocking

4
推荐指数
1
解决办法
3170
查看次数