小编hya*_*kov的帖子

从调用生成器的函数返回或产生?

我有一个生成器generator和一个方便的方法 - generate_all

def generator(some_list):
  for i in some_list:
    yield do_something(i)

def generate_all():
  some_list = get_the_list()
  return generator(some_list) # <-- Is this supposed to be return or yield?
Run Code Online (Sandbox Code Playgroud)

应该generate_all return还是yield?我希望两种方法的用户都使用相同的方法,即

for x in generate_all()
Run Code Online (Sandbox Code Playgroud)

应该等于

some_list = get_the_list()
for x in generate(some_list)
Run Code Online (Sandbox Code Playgroud)

python yield return function generator

31
推荐指数
4
解决办法
1979
查看次数

关于ASP.NET MVC Onion架构的意见

您对以下"通用"代码 - 第一个洋葱风格的ASP.NET MVC架构有何看法: 解决方案资源管理器的屏幕截图

这些层次解释说:

核心 - 包含域模型.例如,这是业务对象及其关系.我正在使用Entity Framework来可视化地设计实体及它们之间的关系.它让我为数据库生成一个脚本.我正在获得自动生成的类似POCO的模型,我可以在下一层(持久性)中自由引用,因为它们很简单(即它们不是特定于数据库的).

持久性 - 存储库接口和实现.基本上是对域模型的CRUD操作.

BusinessServices - 存储库周围的业务层.所有业务逻辑都应该在这里(例如GetLargestTeam(),等等).使用CRUD操作组成返回对象或获取/过滤/存储数据.应包含所有业务规则和验证.

Web(或任何其他UI) - 在这种特殊情况下,它是一个MVC应用程序,但该项目背后的想法是提供UI,由业务服务提供的驱动.UI项目使用Business层,无法直接访问Repository.MVC项目有自己的View模型,这些模型特定于每个View情境.我不是试图强制它域模型.

所以引用如下: UI - > Business Services - > Repository - > Core对象

我喜欢它:

  • 我可以设计我的对象,而不是手动编码.我正在获得代码生成的Model对象.
  • UI由业务层驱动/强制执行.可以针对同一商业模型对不同的UI应用程序进行编码.

关于:

  • 好的,我们有一个可插拔的存储库实现,但是你有多少次真正拥有相同持久性接口的不同实现?
  • UI也是如此 - 我们具有针对相同业务规则实现不同UI应用程序的技术能力,但是当我们可以简单地呈现不同的视图(移动,桌面等)时,为什么我们会这样做呢?
  • 我不确定UI是否应该只通过View模型与业务层进行通信,或者我应该像现在一样使用域模型来传输数据.为了显示,我使用的是视图模型,但是对于数据传输,我使用的是Domain模型.错误?

我不喜欢的:

  • Core项目现在在每个其他项目中引用 - 因为我想/必须访问Domain模型.在传统的Onion架构中,核心仅由下一层引用.
  • DbContext在.Core项目中实现,因为它是由实体框架生成的,位于.edmx所在的位置.我实际上想要使用.EDMX进行可视化模型设计,但我觉得DbContext属于Persistence层,位于特定于数据库的存储库实现中.

作为一个最后的问题 - 什么是一个没有过度设计的好建筑(比如一个完整的洋葱,我们有注射,服务定位器等),但同时提供一些合理的灵活性,在你想要的地方现实需要吗?

谢谢

entity-framework onion-architecture asp.net-mvc-4

21
推荐指数
1
解决办法
8155
查看次数

实体框架代码优先 IQueryable 导航属性

我在互联网上看到的大多数示例都将导航属性显示为任一ICollection或直接List实现。它们通常是virtual, 以启用延迟加载。

但是,当您访问此类属性时,它将在内存中加载整个集合,并且如果您在它之后有一个子查询(即object.MyListProperty.Where(...)),我注意到将为MyListProperty.

我如何避免这种情况?where如果可能,我希望list 属性之后的子句在 SQL 服务器上执行。我可以使用IQueryable导航属性吗?这种情况有什么最佳实践吗?

c# entity-framework iqueryable ef-code-first

6
推荐指数
1
解决办法
1581
查看次数

如何在视图模型重新加载绑定数据时显示“正在加载...”覆盖

我想做一些听起来非常简单的事情,但我发现很难做到。

假设我有一些内容与缓慢加载操作有关。例如,从本地 SQL 检索到的可观察列表需要几秒钟。在发生这种情况时,我想Groupbox用“正在加载...”文本或任何其他“请稍候”类型的内容覆盖内容演示者(例如 a )。

我很快得出结论,在操作前后简单地切换绑定到 UI 的布尔标志是行不通的。在整个操作完成之前,UI 不会刷新。可能是因为操作是CPU密集型的,我不知道。

我现在正在研究Adorners,但是我在“繁忙指标”覆盖的上下文中搜索它时提供的信息很少。互联网上只有一些解决方案,大约 5 年前,我无法让其中任何一个工作。

问题:

听起来很简单 - 如何在视图模型正在更新绑定数据的同时在屏幕上临时显示某些内容?

wpf xaml adorner

6
推荐指数
1
解决办法
5829
查看次数

尝试在 Window 上添加图像会抛出“BitmapImage must have IsFrozen set to false to modify”。

应用程序.xaml

<Application ...
         StartupUri="Views\MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <Local:ViewModelLocator x:Key="ViewModelLocator" />
                <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
                <BitmapImage x:Key="Logo" UriSource="Media/Images/Logo.png" />
            </ResourceDictionary>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

主窗口.xaml

<Image Source="{StaticResource Logo}" Style="{StaticResource LogoStyle}" />
Run Code Online (Sandbox Code Playgroud)

投掷

“System.Windows.Media.Imaging.BitmapImage”的初始化引发异常。

内:

“System.Windows.Media.Imaging.BitmapImage”类型的指定值必须将 IsFrozen 设置为 false 才能修改。

并且调试器指向UriSource.

 at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) …
Run Code Online (Sandbox Code Playgroud)

wpf xaml

5
推荐指数
1
解决办法
1670
查看次数

在 DateTime 比较期间,如何强制实体框架使用 datetime 而不是 datetime2?

我正在使用实体框架来检索记录,其中一个过滤器是 by datetime

它生成如下查询:

([Extent1].[TxnDateTime] >= convert(datetime2, '2015-02-21 00:00:00.0000000', 121)) 
AND ([Extent1].[TxnDateTime] <= convert(datetime2, '2017-02-21 23:59:59.9999999', 121))
Run Code Online (Sandbox Code Playgroud)

有没有办法让 EF 转换为datetime而不是datetime2?看起来快多了。

我希望 EF 生成这个:

[Extent1].[TxnDateTime] >= convert(datetime, '21/02/2015')  
AND [Extent1].[TxnDateTime] <= convert(datetime, '21/02/2017')
Run Code Online (Sandbox Code Playgroud)

datetime

CPU 时间 = 1234 毫秒,运行时间 = 1250 毫秒。

datetime2

CPU 时间 = 1625 毫秒,运行时间 = 1645 毫秒。

我知道 .NETDateTime类型映射到 SQL Server datetime2。我有什么选择呢?

该列可为空datetime,我将其与DateTime?

c# sql-server datetime entity-framework

5
推荐指数
1
解决办法
4499
查看次数

如何禁用 ListView 中取消选择项目?

我有

<ListView SelectionMode="Single" SelectedIndex="0" ItemsSource="{Binding AccountViewModels}" SelectedItem="{Binding SelectedItem}" Style="{StaticResource AccountsList}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <LocalViews:AccountView Margin="{StaticResource ControlMargin}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ListView>
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用从 ListView (即)取消选择项目ctrl+click?换句话说,我不希望用户能够取消选择一个项目,但当然可以选择另一个项目。

wpf xaml

2
推荐指数
1
解决办法
1466
查看次数

将 Unity 升级到 5.11

我们有一个旧代码

public override void PreBuildUp(IBuilderContext context)
{
  var type = context.OriginalBuildKey.Type;
Run Code Online (Sandbox Code Playgroud)

现在必须是

public override void PreBuildUp(ref BuilderContext context)
{
Run Code Online (Sandbox Code Playgroud)

与现在类型OriginalBuildKey中的属性对应的是什么?我想不通。contextBuilderContext

unity-container

2
推荐指数
1
解决办法
404
查看次数