小编Woj*_*icz的帖子

docker-compose 并在初始化时在 Postgres 中创建数据库

我有个问题。我对 docker 很陌生,所以我想要做的是创建一个 docker-compose 文件,该文件在 compose 命令上也将创建数据库。问题是它没有像我问的那样创建数据库。所以我的 docker-compose 看起来像:

version: '3'

services:
  db:
    image: postgres:latest
    restart: always
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: 'postgres'
    volumes:
      - database_data:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

volumes:
  database_data:
    driver: local
Run Code Online (Sandbox Code Playgroud)

当我在日志中启动 docker-compose up 时,我可以看到

db_1  | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1  |
db_1  | 2020-01-13 11:14:36.259 UTC [1] LOG:  starting PostgreSQL 12.1 (Debian 12.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
db_1  | 2020-01-13 11:14:36.259 UTC [1] LOG:  listening on …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

13
推荐指数
5
解决办法
2万
查看次数

指向.net.core和实体框架中sqlite db文件的不同位置

我有一个简单的问题,我有2层应用程序,一些前端和数据访问层,在不同的项目中.我通过数据访问层中的迁移在数据访问层中创建sqlite db,现在我想使用连接字符串,所以我在数据访问层创建上下文,如:

public class TodoDbContext : DbContext
{
    public DbSet<Activity> Activieties { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite(@"Data Source=todo.db");
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来很简单,db是在数据访问层项目中创建的.但是,当我运行前端项目程序正在寻找一个数据库,但在前端项目文件夹.我有checke通过添加:

 var test = Directory.GetCurrentDirectory(); 
Run Code Online (Sandbox Code Playgroud)

在上面的方法中.当我修改连接字符串到直接路径时:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite(@"Data Source=C:\Users\Administrator\Desktop\TodoList\TodoDataAccess\todo.db");
    }
Run Code Online (Sandbox Code Playgroud)

它有效,所以我的问题是我可以做些什么来改变它?

c# sqlite entity-framework .net-core

8
推荐指数
1
解决办法
2480
查看次数

F#和使用Entity Framework Core的迁移

嗨,我有一个问题,

如果在c#中使用实体框架核心,则能够进行db迁移,如果它在启动时没有退出并且看起来相当简单(使用此文档https://docs.microsoft.com/pl-pl/ef/core/managing-模式/迁移/

 db.Database.Migrate();
Run Code Online (Sandbox Code Playgroud)

db是上下文。

因此在f#中上下文看起来像:

模块GeneralContext

open Microsoft.EntityFrameworkCore
open DataAccess.Model.Cabin
open DataAccess.TypeProviders.DatabaseSettings

type GeneralContext() = 
    inherit DbContext()

    override this.OnConfiguring(optionsBuilder : DbContextOptionsBuilder) =  

        let connetionString = DatabaseSettings.GetDbConfiguration
        optionsBuilder.UseNpgsql(connetionString) |> ignore

    [<DefaultValue>]
    val mutable Cabins : DbSet<Cabin>

    member public this.Cabin
        with get() = this.Cabins
        and set cabin = this.Cabins <- cabin
Run Code Online (Sandbox Code Playgroud)

我尝试:

let Migrate =

   use context = new GeneralContext()
   context.Database.Migrate()
Run Code Online (Sandbox Code Playgroud)

但是我收到消息,未定义字段构造函数迁移。我检查了命名空间,比较了实体框架核心外观的c#和f#项目,它们是相同的,

我在mu nuget中使用Microsoft.EntityFrameworkCore.Tools和Npgsql.EntityFrameworkCore.PostgreSQL

我究竟做错了什么?

f# entity-framework-core

5
推荐指数
0
解决办法
452
查看次数

在 bash 中模拟按键

我有一个问题,我有一个非常简单的脚本,它在循环中启动 anpther 二进制文件,它看起来像这样:

for (( i=0; \\$i <= 5; i++ )) ; do 
 test.sh 
done
Run Code Online (Sandbox Code Playgroud)

现在的问题是,每次执行之后 test.sh 都会问我是否要覆盖日志,例如“你想覆盖日志吗?[是/否]”

在出现该提示后,脚本暂停并停止迭代,直到我手动按 Y 并继续直到出现另一个提示。

为了自动化过程,我可以模拟按下“Y”按钮吗?

bash

4
推荐指数
1
解决办法
9948
查看次数

Linux下的Topshelf和.net core

我有一个简单的应用程序,它使用 topshelf 作为服务启动,它看起来很简单:

 HostFactory.Run(x =>
 {
    x.Service<RequestService>();
    x.RunAsLocalSystem();
 });
Run Code Online (Sandbox Code Playgroud)

嗯,它可以工作,但是在 Windows 下。当我在 Linux 下尝试这个时,我得到:

Topshelf.Runtime.Windows.WindowsHostEnvironment 错误:0:无法获取父进程(忽略),System.DllNotFoundException:无法加载共享库“kernel32.dll”或其依赖项之一。为了帮助诊断加载问题,请考虑设置 LD_DEBUG 环境变量:libkernel32.dll:无法打开共享对象文件:没有这样的文件或目录

有人遇到过这个问题吗?我试图用谷歌搜索它,但有人说它有效,但它只是适用于 Windows 的工具。

或者.net core还有其他的服务提升框架吗?

c# topshelf

4
推荐指数
1
解决办法
4404
查看次数

在c#中通过索引获取元组值

我有一个问题,我有一个简单的命名元组和一个配置,在 8 种情况下我应该使用元组值,但通过索引,所以它看起来像:

    private int[] delayParametersIndexSetup = new int[] {1, 0, 0, 1, 1, 0, 0, 1 };
    private (int delayWheel, int delayDiag) delayParameters = (1, 500);
Run Code Online (Sandbox Code Playgroud)

换句话说,当我迭代delayParametersIndexSetup时,我想要一个由该索引表示的元组值,如下所示:

   foreach (var index in delayParametersIndexSetup)
   {
       var value = this.delayParameters.ToTuple()[index];
   }
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用 Item1、Item2 等,但我希望在不使用 case 语句的情况下更加灵活。

我读到我可以使用 ITuple (item[x] 属性,如文档中所示),但我的 VS 找不到这种类型。

我这可能吗?

c#

4
推荐指数
1
解决办法
4525
查看次数

DataGridCell 中的 WPF 转换器

我正在尝试创建转换器,显示某些值是否为其他然后“无”只需在单元格中写入 X,因此我创建了简单的元素样式:

<DataGridTextColumn.ElementStyle>
   <Style TargetType="{x:Type TextBlock}">
   <Setter Property="Text" Value="{Binding Value, Converter={StaticResource SetBitConverter}}"/>
   </Style>
</DataGridTextColumn.ElementStyle>
Run Code Online (Sandbox Code Playgroud)

转换器也很简单

public class SetBitConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var input = value as string;

        switch (input)
        {
            case "None":
                return "OK";
            default:
                return "X";
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在设置值时,它不会进入转换器,但例如,如果我将属性从“文本”更改为“背景”,它将毫无问题地进入转换器。

c# wpf xaml

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

f#强制枚举元素类型

我想我有一个相当简单的问题,但是我找不到有关它的任何信息。因此,例如在c#中,我可以使用继承定义值枚举类型:

public enum RequestedService : ushort
{
    [Description("Unknown")]
    Unknown = 0,

    [Description("Status")]
    SERVICE1 = 0x0001
}
Run Code Online (Sandbox Code Playgroud)

但是我将如何在F#中做到这一点,到目前为止,我将其翻译为:

type RequestedService =
    | [<Description("Unknown")>] Unknown = 0u
    | [<Description("Status")>] SERVICE1 = 0x0001u
Run Code Online (Sandbox Code Playgroud)

我尝试使用继承,并尝试在值之前定义类型,例如

Unknown = uint16 0u
Run Code Online (Sandbox Code Playgroud)

但是我遇到了编译错误,这可能吗?

enums f#

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

F# 如何停止 Async.Start

您好,我有一个关于 F# 中异步的问题。

因此,我有一个在后台运行的简单过程,该过程放置在类型的成员中,如下所示:

type Sender() = 
     member this.Start(udpConectionPool) = async {
        (* Some operation that continuously sends something over udp*)
     } |> Async.Start
Run Code Online (Sandbox Code Playgroud)

因此,这开始并开始通过 UDP 连续发送帧,而不阻塞程序的其余部分,但有时我想重新启动线程(假设我想添加新端点,它将发送到该udpConnectionPool参数)。

我正在考虑将任务转储给成员之类的事情,然后:

member this.Stop() = async {
    do! (*stop async start member that contains task*)
}
Run Code Online (Sandbox Code Playgroud)

然后我可以使用更新的连接池重新启动此任务,但我不知道是否可以做到这一点。

我的问题是,是否可以停止这样的任务,或者如果不能,是否有更好的方法来完成?

f#

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

数据表外的分页控制

我正在使用标准选项生成数据,但我想将分页控件移动到另一个<div>sDom之外

<div class="pagination">pagination</div>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现如何复制它看起来像:

"fnInitComplete": function(oSettings){
    var $pagination = $('.dataTables_paginate').clone(true, true);
    $('.navbar-inner').append($pagination);
}
Run Code Online (Sandbox Code Playgroud)

有办法吗?

datatable jquery

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