小编Sta*_*ajs的帖子

为什么在不同的AppDomain中运行时实体框架明显变慢?

我们有一个Windows服务,可以将一堆插件(程序集)加载到自己的AppDomain中.每个插件都与SOA意义上的"服务边界"对齐,因此负责访问自己的数据库.我们注意到,在单独的AppDomain中,EF的速度要慢3到5倍.

我知道EF第一次创建DbContext并点击数据库时,它必须做一些必须按AppDomain重复的设置工作(即不在AppDomains上缓存).考虑到EF代码完全是自包含的插件(因此自包含到AppDomain),我原本期望时间可以与父AppDomain的时间相媲美.他们为什么不同?

尝试过针对.NET 4/EF 4.4和.NET 4.5/EF 5.

示例代码

EF.csproj

Program.cs中

class Program
{
    static void Main(string[] args)
    {
        var watch = Stopwatch.StartNew();
        var context = new Plugin.MyContext();
        watch.Stop();
        Console.WriteLine("outside plugin - new MyContext() : " + watch.ElapsedMilliseconds);

        watch = Stopwatch.StartNew();
        var posts = context.Posts.FirstOrDefault();
        watch.Stop();
        Console.WriteLine("outside plugin - FirstOrDefault(): " + watch.ElapsedMilliseconds);

        var pluginDll = Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory + @"..\..\..\EF.Plugin\bin\Debug\EF.Plugin.dll");
        var domain = AppDomain.CreateDomain("other");
        var plugin = (IPlugin) domain.CreateInstanceFromAndUnwrap(pluginDll, "EF.Plugin.SamplePlugin");

        plugin.FirstPost();

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

EF.Interfaces.csproj

IPlugin.cs

public interface IPlugin
{
    void FirstPost(); …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework

27
推荐指数
1
解决办法
1926
查看次数

如何在Caliburn Micro中为嵌套视图模型提供设计时支持?

使用VS2013和Caliburn.Micro 2.0.2

鉴于此示例:

  1. 具有嵌套视图模型属性的shell视图模型
  2. shell和嵌套视图模型都具有以下Name属性:

项目

似乎在设计时,嵌套视图模型属性被忽略.有没有办法支持这个?

public class NestedViewModel : PropertyChangedBase
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            NotifyOfPropertyChange(() => Name);
        }
    }

    public NestedViewModel()
    {
        Name = "Nested";
    }
}
Run Code Online (Sandbox Code Playgroud)

 

<UserControl
    x:Class="WpfApplication1.Views.NestedView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:cal="http://www.caliburnproject.org"
    xmlns:viewModels="clr-namespace:WpfApplication1.ViewModels"
    mc:Ignorable="d"
    d:DataContext="{d:DesignInstance Type=viewModels:NestedViewModel, IsDesignTimeCreatable=True}"
    cal:Bind.AtDesignTime="True">
    <Grid>
        <Label x:Name="Name" FontSize="16" Background="LightGreen"/>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

绿色标签显示Name设计器中嵌套视图模型的正确性:

嵌套

public class ShellViewModel : PropertyChangedBase
{
    private string _name;
    private NestedViewModel _nestedViewModel; …
Run Code Online (Sandbox Code Playgroud)

wpf user-controls design-time-data caliburn.micro visual-studio-2013

6
推荐指数
0
解决办法
570
查看次数