小编And*_*ock的帖子

如何在流畅的nhibernate中覆盖约定的级联规则

我有两节课

public class Document 
{ 
    public virtual int Id { get; set; } 
    public virtual IList<File> Files { get; set; } 
} 
public class File 
{ 
    public virtual int Id { get; protected set; } 
    public virtual Document Document { get; set; } 
} 
Run Code Online (Sandbox Code Playgroud)

具有以下约定:

public class HasManyConvention : IHasManyConvention 
{ 
    public bool Accept(IOneToManyPart target) 
    { 
        return true; 
    } 
    public void Apply(IOneToManyPart target) 
    { 
        target.Cascade.All(); 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

和这些映射覆盖

public class DocumentMappingOverride : IAutoMappingOverride<Document> 
{ 
    public void Override(AutoMap<Document> mapping) 
    { 
        mapping.HasMany(x …
Run Code Online (Sandbox Code Playgroud)

fluent-nhibernate

5
推荐指数
1
解决办法
2053
查看次数

多子域cookie和ajax问题

我需要一个HttpOnly身份验证cookie来处理:

mydomain.com
www.mydomain.com
abc.mydomain.com
Run Code Online (Sandbox Code Playgroud)

这样我就可以通过一次登录登录所有三个地方.

这可以正常工作,方法是将我的cookie域设置为:

.mydomain.com
Run Code Online (Sandbox Code Playgroud)

这是设置cookie的响应头:

MYAUTHCOOKIE=FOO; domain=.mydomain.com; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)

这一切都适用于普通的浏览器请求.

但是,我需要从做一个AJAX请求mydomain.com,并www.mydomain.comabc.mydomain.com.

当我发出请求时,它没有传递身份验证cookie.为什么这样,我该怎么办呢?

如果我向JS所在页面的同一主机发出请求,它会发送cookie:s

这是我的请求代码:

$.ajax({
    type: "POST"
    , data: { data: { foo: bar} }
    , dataType: "json"
    , url: "http://abc.mydomain.com/foo"
    , timeout: 5000
    , success: function (data, textStatus) {
        alert('woo!');
    }
    , error: function (xhr, textStatus, error) {
        alert('meh');
    }
});
Run Code Online (Sandbox Code Playgroud)

这是一些跨域政策吗?为什么cookie域不能使这个工作?

谢谢

cookies ajax jquery cross-domain

5
推荐指数
1
解决办法
4705
查看次数

Structuremap PerRequest生命周期

我想在运行中(即在注册表/配置之外)将一个实例注入到结构映射中,该实例在请求的生命周期中存在.

目前我在做这个HandleBeginRequest的事件IHttpModule:

container.Configure(x => x.For<IMyClass>()
  .LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.PerRequest))
  .Use(new MyClass()));
Run Code Online (Sandbox Code Playgroud)

但是,如果在应用程序的生命中的某个时刻我做了:

ObjectFactory.WhatDoIHave();
Run Code Online (Sandbox Code Playgroud)

我看到尽可能多的已配置实例IMyClass(或至少有大量数据).

考虑到它,考虑到我的代码,这种方式是有意义的.

有没有更好的方法将实例注入容器中,只是为了当前请求的生命周期,不会污染整个容器?

谢谢

.net c# structuremap

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

我如何将这个Haskell翻译成F#?

我试图通过翻译我很久以前写的一些Haskell代码来学习F#,但是我被卡住了!

percent       :: Int -> Int -> Float
percent a b    = (fromInt a / fromInt b) * 100

freqs         :: String -> [Float]
freqs ws       = [percent (count x ws) (lowers ws) | x <- ['a' .. 'z']]
Run Code Online (Sandbox Code Playgroud)

我已经成功了:

let percent a b = (float a / float b) * 100.
Run Code Online (Sandbox Code Playgroud)

虽然我不喜欢必须拥有.100之后.

我正在执行的操作的名称是什么freqs,以及如何将其转换为F#?

编辑:countlowersChar -> String -> IntString -> Int分别了,我已经翻译这些.

谢谢

syntax f# haskell list-comprehension

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

如何在TransactionScope中包装IDbTransactions

我有几个代码方法,如下所示:

using (var connection = this.connectionFactory.GetConnection())
{
    connection.Open();
    using (var transaction = connection.BeginTransaction())
    {
        using (var command = connection.CreateCommand())
        {
            command.Transaction = transaction;
            command.CommandText = "foo";
            command.ExecuteNonQuery();
            transaction.Commit();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在需要在外部事务中一起调用这些方法中的几个,所以我这样做了:

using (var transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
    method1();
    method2();
    method3();
}
Run Code Online (Sandbox Code Playgroud)

但它的做法是:

The operation is not valid for the state of the transaction.
   at System.Transactions.TransactionState.EnlistPromotableSinglePhase(InternalTransaction tx, IPromotableSinglePhaseNotification promotableSinglePhaseNotification, Transaction atomicTransaction)
   at System.Transactions.Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification)
   at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
   at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)
   at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction)
   at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) …
Run Code Online (Sandbox Code Playgroud)

c# transactions transactionscope

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

Jquery Ajax总是使用CORS抛出错误

只是为了澄清,因为我无法在标题中找到足够的信息......

我正在做一个跨站请求并坚持CORS,这一切都有效.浏览器发送一个选项请求,我的服务响应一堆接受标题,然后浏览器接受200响应并发送帖子.如果您不需要任何信息,请随意跳过标题输出:

初始选项请求:

OPTIONS http://localhost:1837/authentication HTTP/1.1
Host: localhost:1837
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Origin: http://localhost:6879
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
Pragma: no-cache
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)

选项回应:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 30 Jun 2011 09:50:43 GMT
X-AspNet-Version: 4.0.30319
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Max-Age: 1000
Access-Control-Allow-Headers: CONTENT-TYPE, x-requested-with
Access-Control-Allow-Origin: http://localhost:6879
X-AspNetMvc-Version: 3.0
Cache-Control: private
Content-Length: 0
Connection: Close
Run Code Online (Sandbox Code Playgroud)

发布请求:

POST http://localhost:1837/authentication HTTP/1.1 …
Run Code Online (Sandbox Code Playgroud)

ajax jquery cors

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

多线程设计模式

我有一个可以被多个线程访问的类的实例.

在这个类中是一个[ThreadStatic]存储各种对象的变量.

我现在需要我的类的第二个实例,我希望它在其中有一个单独的对象存储.

目前,同一线程中的两个实例将共享同一个对象库.我不想要这个.

我能想到的唯一解决方案是:

有一个静态IDictionary<int, TObjectStore>,其中int是线程ID,并通过一些方法或getter访问:

static TObjectStore ObjectStore {
    get {
        // create the instance here if its the first-access from this thread, with locking etc. for safety
        return objectStore[Thread.CurrentThread.Id];
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题是如何TObjectStore在特定线程结束时处理它?我认为我正确地假设在目前的实施中,GC会简单地拿起它?

谢谢

c# multithreading design-patterns

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

适当的数据结构,用于快速搜索"两对"之间的长度

我目前(概念上)有:

IEnumerable<Tuple<long, long, Guid>>
Run Code Online (Sandbox Code Playgroud)

给定一个long,我需要找到"对应的" GUID.

longs 对不应重叠,尽管对之间可能存在间隙,例如:

1, 10, 366586BD-3980-4BD6-AFEB-45C19E8FC989
11, 15, 920EA34B-246B-41B0-92AF-D03E0AAA2692
20, 30, 07F9ED50-4FC7-431F-A9E6-783B87B78D0C
Run Code Online (Sandbox Code Playgroud)

对于每个输入long,应该有完全匹配01匹配的GUIDs.

所以输入7,应该返回366586BD-3980-4BD6-AFEB-45C19E8FC989

输入16应该返回null

更新:我有大约90K对

我应该如何将其存储在内存中以便快速搜索?

谢谢

c#

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

如何让多个线程等待单个任务?

我读过这篇文章:从多个线程等待同一任务可以吗-等待线程安全吗?我对答案不清楚,所以这里有一个特定的用例。

我有一种执行一些异步网络I / O的方法。多个线程可以立即使用此方法,我不需要它们全部调用网络请求,如果一个请求已经在进行中,我想阻止/等待第二个以上线程,并在一次IO操作后让它们全部恢复已经完成。

应该如何编写以下伪代码?我猜每个调用线程真正需要得到它自己的Task,所以每个人都可以得到它自己的延续,所以不是返回的currentTask我应该回到一个新的Task,其完成了由“内” TaskDoAsyncNetworkIO。有没有一种干净的方法可以做到这一点,或者我必须手动滚动它?

static object mutex = new object();
static Task currentTask;

async Task Fetch()
{
    lock(mutex)
    {
        if(currentTask != null)
            return currentTask;
    }

    currentTask = DoAsyncNetworkIO();
    await currentTask;

    lock(mutex)
    {
        var task = currentTask;
        currentTask = null;
        return task;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading asynchronous async-await

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

如何检查天蓝色管道上的子模块?

我读过这个,https ://docs.microsoft.com/en-us/azure/devops/pipelines/repos/pipeline-options-for-git?view = azure-devops 但作为一个 Azure 初学者它不是很有帮助.

我在 GitHub 中有两个存储库,一个通过子模块引用另一个。我已授予 Azure Pipelines 访问 GitHub 中两个存储库的权限。

我已经按照入门指南制作了一个新管道,并将它添加azure-pipelines.yml到我的存储库中。它看起来像这样:

# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: …
Run Code Online (Sandbox Code Playgroud)

azure-devops

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