小编Dai*_*Dai的帖子

具有非关键字段的实体框架关联

是否可以在实体框架中创建关联b/t 2个非关键字段?

示例:在遗留应用程序中获取2个表(即键/结构不能更改)

Order (
    OrderId : int : PK
    OrderNo : varchar
)

OrderDetails (
    DetailRecordId : int : PK
    OrderNo : varchar
)
Run Code Online (Sandbox Code Playgroud)

在实体框架,我想创建关联B/T OrderOrderDetailsOrderNo字段,这是不在任表或数据库中的一个FK关系的主键.

在我看来,这不仅应该是容易做到的,而且是使用像EF这样的东西的一个原因.但是,似乎只允许我使用实体键创建关联.

entity-framework

6
推荐指数
1
解决办法
3946
查看次数

TripleDES密钥大小 - .NET与维基百科

根据维基百科,TripleDES支持56,112和168位密钥长度,但System.Cryptography.TripleDESCryptoServiceProvider.LegalKeySizes表示它只接受128和192位密钥长度.

我正在开发的系统需要可以互操作(我的代码加密的数据需要在PHP,Java和Objective-C中解密),在这种情况下我不是正确的.

那么我应该相信谁呢?我怎样才能确定我的加密数据是否可移植?

encryption wikipedia des tripledes

6
推荐指数
1
解决办法
1万
查看次数

SQL Server BULK INSERT - 插入DateTime值

我有600万行数据要插入到我的SQL Server数据库中.我可以用600万INSERT语句(通过我的计算运行需要18个小时)来缓慢地进行,或者我可以尝试BULK INSERT.

BULK INSERT存在无法转义字符的问题,但这种情况下的数据非常简单,所以不应该遇到这个问题.

但是,SQL Server似乎不希望将任何形式的日期/时间数据插入到字段中.

这是表(psuedo-SQL)

CREATE TABLE Tasks (
    TaskId bigint NOT NULL IDENTITY(1,1) PRIMARY KEY,
    TriggerId bigint NOT NULL FOREIGN KEY,
    Created datetime NOT NULL,
    Modified datetime NOT NULL,
    ScheduledFor datetime NULL,
    LastRan datetime NULL,
    -- and about 10 more fields after this
)
Run Code Online (Sandbox Code Playgroud)

这是我的BULK INSERT声明:

SET DATEFORMAT dmy
BULK INSERT Tasks
FROM 'C:\TasksBulk.dat'
WITH (
    -- CHECK_CONSTRAINTS is not necessary as the only constraints are always enforced regardless of this option (UNIQUE, PRIMARY KEY, and …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server bulkinsert

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

Cargo-cult编程:锁定System.Object

我想我已经开发了一种货物崇拜编程习惯:

每当我需要创建一个类线程安全时,例如一个具有Dictionary或List的类(完全封装:永远不会直接访问并仅由我的类的成员方法修改),我创建了两个对象,如下所示:

public static class Recorder {

    private static readonly Object _devicesLock = new Object();
    private static readonly Dictionary<String,DeviceRecordings> _devices;

    static Recorder() {

        _devices = new Dictionary<String,DeviceRecordings>();

        WaveInCapabilities[] devices = AudioManager.GetInDevices();
        foreach(WaveInCapabilities device in devices) {

            _devices.Add( device.ProductName, new DeviceRecordings( device.ProductName ) );
        }
    }//cctor

    // For now, only support a single device.

    public static DeviceRecordings GetRecordings(String deviceName) {

        lock( _devicesLock ) {

            if( !_devices.ContainsKey( deviceName ) ) {

                return null;
            }

            return _devices[ deviceName ];
        }
    }//GetRecordings
}//class
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我将所有操作包装 …

c# synchronization locking

6
推荐指数
1
解决办法
258
查看次数

只有在enableSessionState设置为true时才能使用会话状态

我没有使用MVC,URL重写,自定义HTTP模块等.在对继承System.Web.UI.Page或通过System.Web.HttpContext.Current.Session的网页的Session属性进行基本调用时,我得到以下错误:

只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态.还请确保System.Web.SessionStateModule或自定义会话状态模块包含在<configuration>\<system.web>\<httpModules>应用程序配置的部分中.

在做了一些研究之后,我已经实现了如下的Web.config,但错误仍然存​​在.我正在使用内置的Web服务器从Visual Studio 2010调试Web应用程序.

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <sessionState mode="InProc" timeout="60" cookieless="false" />
        <pages enableSessionState="true" />
        <httpModules>
            <remove name="Session" />
            <add name="Session" type="System.Web.SessionState.SessionStateModule" />
        </httpModules>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

asp.net session web-config session-state

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

通过ViewModel禁用特定的DataGridCheckBoxColumn单元格

我的MVVM项目有这个ViewModel:

class ListViewModel : ViewModelBase {
    public ObservableCollection<ListItemviewModel> Items { ... }
}
class ListItemViewModel : ViewModelBase {
    public String  Name      { ... }
    public Boolean IsChecked { ... }
    public Boolean IsEnabled { ... }
}
Run Code Online (Sandbox Code Playgroud)

编写XAML似乎很简单:

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn     Header="Name"       Binding="{Binding Name}" />
        <DataGridCheckBoxColumn Header="Is checked" Binding="{Binding IsChecked}" />
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

但是,我怎么能得到这么当ListItemViewModelIsEnabled财产是falseDataGridCheckBoxColumn"该行中的蜂窝被禁用?

我尝试设置IsReadOnly={Binding IsDisabled}(并添加IsDisabled属性ListItemViewModel,但无济于事) - 我认识到将禁用/启用整个列,而不是单个单元格.

我也试过这些指令(如何在绑定到ObservableCollection时禁用DataGrid中的单元格):

<DataGridCheckBoxColumn Header="Is checked" …
Run Code Online (Sandbox Code Playgroud)

wpf datagrid mvvm

6
推荐指数
1
解决办法
2188
查看次数

基于属性的路由和顺序

我在 .NET 4.6.1 上的 ASP.NET 4.5 上使用 ASP.NET MVC 5。

我有两个控制器:

FooController
FooIndexController
Run Code Online (Sandbox Code Playgroud)

这是因为 的 Index 操作Foo很复杂,所以我觉得它们最好在自己的单独Controller类中。

我正在使用基于属性的路由。我的 ASP.NET MVC 版本OrderRouteAttribute.

我有这些动作:

class FooController {

    // Returns a view to allow editing of the Foo entity
    [HttpGet]
    [Route("~/{tenant}/foo/{fooName}", Order=2)]
    public ActionResult Edit(String fooName, FooViewModel model) {
        ...
    }

}

class FooIndexController {

    // Returns a CSV file download listing all of the Foo entities
    [HttpPost]
    [Route("~/{tenant}/foo/csv", Order=1)]
    public ActionResult IndexCsv() {
        ... …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-routing

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

Chrome开发工具能否显示元素大小的来源或原因?

在Chrome开发者工具(自Chrome 63起)的“元素”窗口中选择一个元素时,“计算”标签将显示当前计算出的宽度和高度以及所有其他非默认属性。

但是据我所知,它并没有描述,解释或揭示来源原因为一个元素的框的大小,如果它的大小是不是由于直接向直接设置属性,或者财产继承或级联。

考虑以下示例:

<div id="div1">
    <p id="p1">Lorem ipsum</p>
</div>
Run Code Online (Sandbox Code Playgroud)

使用默认HTML5样式表(即div, p { display: block;})Chrome浏览器将显示计算的宽度和高度#div1,并#p1是相同的,但无处没有指出的高度#div1是造成#p1,也不是说#p1的身高是由它的内容引起的(也考虑到line-heightfont-size以及其他相关的性质)。

如果将样式表更改为此:

#div1 { height: 500px; }
#p1 { height: 75%; overflow: hidden; }
Run Code Online (Sandbox Code Playgroud)

...然后,“开发人员工具”窗口应提供一些指示,表明#div1的高度直接来自height: 500px;属性,而#p1的高度现在源自#div1而不是其内容。

Chrome开发人员工具或JavaScript工具中是否存在此功能?

css google-chrome google-chrome-devtools

6
推荐指数
1
解决办法
626
查看次数

在Visual Studio 2017中运行简单的Hello World时发生错误

今天是我学习C#的第一天.我对Java和C很有经验,通常不会遇到我无法解决的问题.我一直害怕使用Visual Studio,因为当我用来运行我的汇编程序时,我会收到永无止境的错误.今天我想要运行一个简单的hello world程序.运行程序后,我收到以下错误.

'dotnet.exe' (CoreCLR: DefaultDomain): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Users\cansh_000\source\repos\Program\Program\bin\Debug\netcoreapp2.0\Program.dll'. Symbols loaded.
'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Console.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program …

.net c# visual-studio

6
推荐指数
2
解决办法
1183
查看次数

是否可以使用 if 语句优雅地配置 Serilog?

我的 Serilog 配置代码如下所示:

Log.Logger = new LoggerConfiguration()
    .Enrich.WithExceptionDetails()
    .Enrich.FromLogContext()
    .MinimumLevel.Warning()
//  .MinimumLevel.Override("Microsoft", LogEventLevel.Verbose)
//  .MinimumLevel.Override("System", LogEventLevel.Verbose)
//  .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Verbose)
    .WriteTo.Console( outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Literate )
//  .WriteTo.File()
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

我想在运行时更改此配置,不幸的是,因为 Serilog 使用了“流畅”风格的 API,这使它有些混乱。例如,如果我想在运行时启用或禁用控制台和文件日志记录:

Boolean enableConsoleLogging = ...
Boolean enableFileLogging = ...

LoggerConfiguration builder = new LoggerConfiguration()
    .Enrich.WithExceptionDetails()
    .Enrich.FromLogContext()
    .MinimumLevel.Warning();

if( enableConsoleLogging )
{
    builder = builder
        .WriteTo.Console( outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Literate )
}

if( enableFileLogging )
{
    builder = builder
        .WriteTo.File( ... )
}
Log.Logger = builder.CreateLogger(); …
Run Code Online (Sandbox Code Playgroud)

c# fluent serilog

6
推荐指数
2
解决办法
4056
查看次数