小编gcs*_*cso的帖子

建模大(50~)个属性的策略

脚本

我正在解析电子邮件并使用ORM将它们插入数据库(确切地说是NHibernate).虽然我目前的方法在技术上有效,但我不是很喜欢它,但不能提供更好的解决方案.该电子邮件包含50个字段,并从第三方发送,看起来像这样(显然是一个非常短的虚拟样本).

Field #1: Value 1       Field #2: Value 2
Field #3: Value 3       Field #4: Value 4       Field #5: Value 5
Run Code Online (Sandbox Code Playgroud)

问题

我的问题是,通过解析这么多字段,数据库表是一个绝对的怪物.我无法使用任何种类的关系创建适当的模型AFAIK,因为发送的每封电子邮件都是静态数据,并且不依赖于任何其他来源.

我唯一的想法是找到每个字段之间的共性,并将它们分成更易于管理的块.每个实体说10~字段,总共5个实体.然而,我并非非常喜欢这个想法,因为我所做的就是建立一对一的关系.

管理大量不受控制的房产的好方法是什么?

有什么想法吗?

c# nhibernate

3
推荐指数
2
解决办法
379
查看次数

减少TreeViewItem中最深节点的缩进

如何减少最深TreeViewItem节点的左缩进?出于某种原因,除了最深的节点之外,WPF似乎都会增加这种缩进.查看Window XP的树视图实现,每个深度具有相同的左边距.

我一直在搜索,我似乎无法找到一个有效的实现,它似乎是可能的.

wpf xaml

3
推荐指数
1
解决办法
4757
查看次数

UI在TreeView控件中更新ObservableCollection <T>时速度很慢

脚本

我有一个TreeView必然的ObservableCollection<T>.每次最终用户修改其过滤器时,都会修改该集合.当用户修改他们的过滤器时,会调用数据库(需要1-2ms顶部),并且返回的数据将被解析以创建层次结构.我也有一些XAML确保每个都TreeViewItem被扩展,这似乎是问题的一部分.请记住,我只修改了200个最大节点深度为3的对象.我希望这是即时的.

问题

问题是每当过滤器被修改并且TreeView层次结构发生变化时,UI会挂起约1秒钟.

这是负责创建TreeView层次结构的XAML .

<TreeView VerticalAlignment="Top" ItemsSource="{Binding Hierarchy}" Width="240"
          ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.Row="1">
    <TreeView.ItemTemplate>
        <!-- Hierarchy template -->
        <HierarchicalDataTemplate ItemsSource="{Binding Stations}">
            <TextBlock Text="{Binding}" />
            <!-- Station template -->
            <HierarchicalDataTemplate.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Locates}">
                    <TextBlock Text="{Binding Name}" />
                    <!-- Locate template -->
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TicketNo}" />
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

这是更新列表的代码.

public ObservableCollection<HierarchyViewModel> Hierarchy
{
    get { return _hierarchy; }
    set { _hierarchy = value; }
} …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

如何通过类似效果实现罢工

我正在寻找类似的效果---- or ----.但是,下面的代码创建了一个通过效果.我认为这个设置Grid.ZIndex可以解决问题,但它似乎没有做任何事情.

<Grid>
    <TextBlock Text="or" FontSize="22" Height="34" Grid.ZIndex="2" HorizontalAlignment="Center" />
    <Line Stretch="Fill" Stroke="Black" X1="1" Margin="0 4 0 -1" SnapsToDevicePixels="True" Grid.ZIndex="1" Height="34" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

如果我为我的TextBlock控件设置背景,那么一切正常.但我想要的是使用默认的灰色背景(例如,根本不设置背景).

我怎么能做到这一点?

wpf xaml

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

无法从msbuild脚本中删除*.vshost.exe

我目前正在编写一个msbuild脚本,并且有删除问题*.vshost.exe.

在构建和部署项目之前,我运行Clean目标以及此目标.

<Target Name="CleanLogs">
    <ItemGroup>
        <FilesToDelete Include="$(OutputPath)\*.*" />
    </ItemGroup>
    <Delete Files="@(FilesToDelete)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

CleanLogs目标是拿起日志文件,我们生成默认的Clean目标也不会有起色.似乎经常会出现锁定*.vshost.exe.

如何强制删除此文件?

msbuild .net-3.5

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

温莎为什么不解决我注册的每个装饰者?

我有一个班,我想装饰两次.但是,当我解决这个类时,Windsor只修饰它一次而不是使用我的2个装饰器.我不确定为什么会这样,因为我在我正在解析的类之前注册了两个装饰器,这就是我理解装饰器与Windsor一起工作的方式.

这是我的代码.

public interface IQueryExecuter
{
    TReturn Execute<TReturn>(IQuery<TReturn> query);
}

public class QueryLoggingDecorator : IQueryExecuter
{
    private ILogger _logger = NullLogger.Instance;

    public ILogger Logger
    {
        set { _logger = value; }
    }

    public TReturn Execute<TReturn>(IQuery<TReturn> query)
    {
        _logger.Info("Before query execute");
        var queryResults = query.Execute();
        _logger.Info("After query execute");

        return queryResults;
    }
}

public class QueryTransactionDecorator : IQueryExecuter
{
    public TReturn Execute<TReturn>(IQuery<TReturn> query)
    {
        try
        {
            Console.WriteLine("Beginning transaction");
            var queryResults = query.Execute();
            Console.WriteLine("Comitting transaction");

            return queryResults;
        }
        catch (Exception)
        {
            Console.WriteLine("Rolling back …
Run Code Online (Sandbox Code Playgroud)

dependency-injection castle-windsor

0
推荐指数
1
解决办法
214
查看次数