我在关系的一侧有以下映射覆盖:
public void Override(AutoMapping<ItemAsmtDetailDh> mapping)
{
mapping.HasMany<WAsmtDetail>(x => x.WAsmtDetails).Inverse().AsBag().Cascade.AllDeleteOrphan().Access.PascalCaseField(Prefix.Underscore).Not.LazyLoad().Fetch.Join();
}
Run Code Online (Sandbox Code Playgroud)
在我的关系的另一边:
public void Override(AutoMapping<WAsmtDetail> mapping)
{
mapping.References<ItemAsmtDetailDh>(x => x.ItemAsmtDetailDh).Not.Nullable().Not.LazyLoad().Fetch.Join();
}
Run Code Online (Sandbox Code Playgroud)
当我使用ShowSql选项时,我看到它仍然为WAsmtDetails发出单独的select语句,给我带来了可怕的"n + 1选择"问题.为什么".Not.LazyLoad().Fetch.Join()"被忽略了?
注意:我使用的是Fluent NHibernate 1.1 版,而不是版本2.1,因为新版本中存在错误.(有关错误的详细信息,请参阅我对此问题的回答.)我正在使用NHibernate 2.1.2.4000版.
在搜索网络时,我遇到了Eric Evans的书中的一系列规则,这些规则应该针对聚合强制执行:
这一切似乎在理论上很好,但我看不出这些规则将被强制在现实世界中.
以规则3为例.一旦根实体为外部对象提供了对内部实体的引用,那么什么是使该外部对象保持超出单个方法或块的引用?
(如果执行此操作是特定于平台的,我将有兴趣了解如何在C#/ .NET/NHibernate环境中强制执行此操作.)
到目前为止,我还没有找到有关将 Blazor Server(不是WebAssembly)与 API 网关和微服务结合使用的指南。讨论这些 Blazor 以及 API 网关和微服务的文章总是提到 Blazor WebAssembly (Wasm)。(是否假设 Blazor Server 应用程序不会使用微服务?此外,就其价值而言,选择 Blazor Server 而不是 Blazor WebAssembly 的原因是为了更好地保护知识产权。)
\n\n无论如何...我想知道 Blazor Server 应用程序是否应该位于网关前面,通过网关将其内部 API 调用发送到网关后面的微服务,例如 \xe2\x80\xa6
\n\n[浏览器] ----(SignalR)--- [Blazor 服务器应用程序] ----(https)---- [API 网关] ----(http)---- [微服务]
\n\n或者将应用程序放在网关后面,让 SignalR 连接隧道通过网关,这样更有意义吗\xe2\x80\xa6
\n\n[浏览器] ----(SignalR)---- [API 网关] ----(SignalR)---- [Blazor 服务器应用程序] ----(http)---- [微服务]
\n\n请记住在建立 SignalR 连接之前应用程序在浏览器中的初始加载。需要单独处理吗?它会影响上面给出的选项的选择吗?我缺少更好的解决方案吗?
\narchitecture microservices api-gateway blazor blazor-server-side
我正在使用NHibernate和Fluent NHibernate.
我有代码,我开始一个事务,然后我进入一个创建几个对象的循环.对于每个对象,我检查某些条件.如果满足这些条件,则在对象上执行session.SaveOrUpdate().在循环结束时,我发出一个提交事务.
我在session.SaveOrUpdate命令上设置了断点,证明它永远不会到达(因为循环中的任何对象都没有满足条件). 然而,当事务提交时,对象被保存!
我正在使用AuditInterceptor并在OnSave方法中设置了断点.它被调用,但堆栈跟踪仅追溯到提交事务的语句.
此时没有任何类型的对象已经对它们执行了SaveOrUpdate,因此级联不能解释它.
为什么NHibernate会保存这些对象?
我想比较各种属性的两个版本,如果它不等于另一个,则加粗其中一个.由于SL4不支持MultiBinding,我将FontWeight绑定到".".以便将整个数据上下文传递给转换器.然后,我使用converter参数指定要在转换器中比较的字段.到目前为止,这么好......不匹配的值是粗体.
问题是粗体属性绑定到可以编辑的文本框.编辑该值时,我希望"重新激活"转换器,以便根据新值设置字体粗细.这不会发生.如何实现这一目标?
注意:我已经为相关的类和属性实现了INotifyPropertyChanged.更改值后切换到下一个字段会导致PropertyChanged事件触发,但在我实际移动到另一个记录然后返回到已更改的记录之前,字体权重不会更新.
(我也尝试使用Mode = TwoWay来查看是否可以解决问题.但是,当你绑定到"."时,不能使用TwoWay绑定.)
我正在使用SL4和RIA Services构建基于Silverlight业务应用程序模板的新解决方案.由于我还在开发,我只是使用localhost.
我试图通过在关联(组合)实体中进行单个更改并调用SubmitChanges来测试SubmitChanges功能.我在UpdateService中的入口点的DomainService中有一个断点.断点被击中,一切看起来都没问题.此时,我实际上没有Update方法做任何事情 - 它只是返回.在客户端回调中,我检查SubmitOperation对象是否有错误.它报告:
Submit operation failed. The remote server returned an error: NotFound.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到未找到的东西.
我尝试使用Fiddler(以及WCF二进制插件),据我所知,请求看起来不错,但根据Fiddler的说法:
ReadResponse() failed: The server did not return a response for this request.
Run Code Online (Sandbox Code Playgroud)
嗯......那可能不对,因为我的回调断点被击中了.(这就是我收到NotFound错误消息的方法.)
我还尝试使用以下内容编辑我的web.config文件:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior name="RIAServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
这没有提供任何新信息.我开始没有关于如何追踪"真实"问题的想法.有任何想法吗??
我正在尝试使用 CsvHelper 读取 CSV 文件并从中创建数据表。第一行将是提供列名的标题记录,但除此之外,文件的结构是未知的。如果我使用以下代码(取自 CsvHelper 的作者的示例),它就可以工作。
using (var reader = new StreamReader("path\\to\\file.csv"))
using (var csv = new CsvReader(reader))
{
// Do any configuration to `CsvReader` before creating CsvDataReader.
using (var dr = new CsvDataReader(csv))
{
var dt = new DataTable();
dt.Load(dr);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我为 StreamReader 使用备用构造函数,该构造函数将 Stream 作为参数而不是文件路径,那么 CsvDataReader 的创建将失败并显示“不支持同步读取”的错误消息。
我尝试了 CsvHelper 的其他一些方法来尝试以不同的方式处理数据,但是每当通过传入 Stream 而不是文件路径来创建 StreamReader 时,我都会遇到相同的错误。我开始怀疑真正的问题在于 StreamReader 的实现还是 CsvHelper。在我的情况下(Blazor Server 应用程序),传入 Stream 更有意义。有任何想法吗?
编辑:
我相信 David Specht 是正确的,因为我使用的特定流有一些独特之处。在进一步的测试中,我发现一些字符串确实有效。在出现错误的情况下,我使用 IFileListEntry.Data 流接口从 Steve Sanderson 的 BlazorInputFile 组件(在 GitHub …
我正在使用Sparx Enterprise Architect 9.2版使用ODBC连接从MySQL数据库导入数据库模式.当我使用ODBC数据源管理器(Windows 7)测试ODBC连接时,连接测试成功.我正在使用MySQL ODBC 5.1驱动程序.
在Enterprise Architect中,当我尝试使用此ODBC连接导入架构时,我收到一条消息,说"无法获取表信息".
我错过了什么吗?有任何想法吗?
blazor ×2
nhibernate ×2
silverlight ×2
api-gateway ×1
architecture ×1
binding ×1
csv ×1
csvhelper ×1
mysql ×1
odbc ×1
stream ×1
streamreader ×1
xaml ×1