Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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# Winforms.net核心3连接字符串位置_C#_Winforms_.net Core - Fatal编程技术网

C# Winforms.net核心3连接字符串位置

C# Winforms.net核心3连接字符串位置,c#,winforms,.net-core,C#,Winforms,.net Core,我已经创建了一个Winforms.NETCore3项目,我想知道应该在哪里放置连接字符串?通常在基于web的核心项目中,我会将其放在appsettings.json中 class DatabaseContext : DbContext { public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) { } protected

我已经创建了一个Winforms.NETCore3项目,我想知道应该在哪里放置连接字符串?通常在基于web的核心项目中,我会将其放在appsettings.json中

class DatabaseContext : DbContext
    {
        public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
        { }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);


        }

        public DbSet<InsModel> Models { get; set; }

    }
classdatabasecontext:DbContext
{
公共数据库上下文(DbContextOptions):基本(选项)
{ }
模型创建时受保护的覆盖无效(ModelBuilder)
{
基于模型创建(生成器);
}
公共数据库集模型{get;set;}
}

通常在ASP.NET Core中,配置连接字符串可以存储在appsettings.json、环境变量、用户密钥存储或其他配置源中。见

通常在Startup.cs中配置上下文,并从配置中读取连接字符串。注意GetConnectionString()方法查找键为ConnectionString:的配置值。您需要导入命名空间才能使用此扩展方法

public void ConfigureServices(IServiceCollection services)
 {
    services.AddDbContext<BloggingContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
 }
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseSqlServer(Configuration.GetConnectionString(“博客数据库”));
}
更多的细节

对于windows窗体,它应该是不同的。 可以向项目中添加和配置文件以存储连接字符串。连接字符串应添加到应用程序的App.config文件(如果使用ASP.NET,则为Web.config)


EF核心连接字符串上不需要providerName设置 存储在App.config中,因为数据库提供程序是通过 代码

然后,可以在上下文的onconfigurang方法中使用ConfigurationManager API读取连接字符串。您可能需要添加对System.Configuration framework程序集的引用才能使用此API

public class BloggingContext : DbContext
{
   public DbSet<Blog> Blogs { get; set; }
   public DbSet<Post> Posts { get; set; }

   protected override void OnConfiguring(DbContextOptionsBuilder 
   optionsBuilder)
        {
  optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
      }
}
公共类BloggingContext:DbContext
{
公共数据库集博客{get;set;}
公共DbSet Posts{get;set;}
配置时受保护的覆盖无效(DbContextOptionsBuilder
选项生成器)
{
optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionString[“BloggingDatabase”].ConnectionString);
}
}

因为这是一个win forms项目,我没有启动?我习惯于在基于web的项目中使用上述内容,这是您的启动类项目,在所有类型的项目中,都会先启动。如果没有,您可以创建一个。您有哪个配置文件?请参阅上面添加的图片,我刚刚添加了startup.cs和appsettings.json这对winforms不正确。他说winforms winforms没有startup类
<configuration>
  <connectionStrings>
    <add name="BloggingDatabase"
         connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
  </connectionStrings>
</configuration>
public class BloggingContext : DbContext
{
   public DbSet<Blog> Blogs { get; set; }
   public DbSet<Post> Posts { get; set; }

   protected override void OnConfiguring(DbContextOptionsBuilder 
   optionsBuilder)
        {
  optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
      }
}