Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF/EF代码创建的第一个mdf文件无法使用工具访问_C#_Wpf_Entity Framework_Ef Code First - Fatal编程技术网

C# WPF/EF代码创建的第一个mdf文件无法使用工具访问

C# WPF/EF代码创建的第一个mdf文件无法使用工具访问,c#,wpf,entity-framework,ef-code-first,C#,Wpf,Entity Framework,Ef Code First,我使用CustomConnectionFactory和PromptForDropCreateDatabase创建了一个MDF文件。当从“代码优先”O'Reily的书中选择“方式”时,该文件已创建,但无法从VS或SSMS访问。我能够在VS服务器资源管理器中查看通过扩展树视图创建的DB表和参数,但在“显示数据”上显示错误:“找不到指定的模块。(HRESULT异常:0x8007007E)”。我查找了这个错误,似乎服务器权限有问题,但是将SSM设置为最高权限(sysadmin、owner等)没有帮助。我

我使用CustomConnectionFactory和PromptForDropCreateDatabase创建了一个MDF文件。当从“代码优先”O'Reily的书中选择“方式”时,该文件已创建,但无法从VS或SSMS访问。我能够在VS服务器资源管理器中查看通过扩展树视图创建的DB表和参数,但在“显示数据”上显示错误:“找不到指定的模块。(HRESULT异常:0x8007007E)”。我查找了这个错误,似乎服务器权限有问题,但是将SSM设置为最高权限(sysadmin、owner等)没有帮助。我认为文件本身可能存在权限问题。提前感谢您的帮助

代码如下:

App.xaml.cs:

    protected override void OnStartup(StartupEventArgs e)
            {
                AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ""));
                Database.DefaultConnectionFactory = new CustomConnectionFactory();
                Database.SetInitializer(new PromptForDropCreateDatabaseWhenModelChages<AppEntities>());

                using (var context = new AppEntities())
                {
                    context.Clicks.Add(new MouseClick
                        {
                            DateTimeCreated = DateTime.Now,
                            DateTimeModified = DateTime.Now,
                            Id = 1,
                            IsActive = true,
                        });
                }


                var mainView = new MainView
                    {
                        DataContext = new ViewModelMain(new AppEntities())
                    };

                mainView.Show();
            }
PromptForDropCreateDatabaseWhenModelChanges.cs:

public class PromptForDropCreateDatabaseWhenModelChages<TContext> : IDatabaseInitializer<TContext> where TContext : DbContext
    {
        public void InitializeDatabase(TContext context)
        {
            var exists = context.Database.Exists();

            if (exists && context.Database.CompatibleWithModel(true))
            {
                return;
            }

            if (exists && context.Database.CompatibleWithModel(false))
            {
                context.Database.Delete();
            }

            context.Database.Create();
        }
    }
公共类PromptForDropCreateDatabaseWhenModelChages:IDatabaseInitializer,其中TContext:DbContext
{
public void InitializeDatabase(TContext上下文)
{
var exists=context.Database.exists();
if(exists&&context.Database.CompatibleWithModel(true))
{
返回;
}
if(exists&&context.Database.CompatibleWithModel(false))
{
context.Database.Delete();
}
context.Database.Create();
}
}

在家用电脑上重新创建后,一切正常。似乎工作中有一些网络限制

public class PromptForDropCreateDatabaseWhenModelChages<TContext> : IDatabaseInitializer<TContext> where TContext : DbContext
    {
        public void InitializeDatabase(TContext context)
        {
            var exists = context.Database.Exists();

            if (exists && context.Database.CompatibleWithModel(true))
            {
                return;
            }

            if (exists && context.Database.CompatibleWithModel(false))
            {
                context.Database.Delete();
            }

            context.Database.Create();
        }
    }