小编And*_*ock的帖子

奇怪的linq到nhibernate问题,来自'System.Int32'的无效转换

调用以下代码中的Get工作正常:

public class ContractService : IContractService
{
    private readonly IRepository<Contract> repository;

    public ContractService(IRepository<Contract> repository)
    {
        this.repository = repository;
    }

    public Contract Get(int contractId)
    {
        return repository.Query().Where(x => x.Id == contractId).FirstOrDefault();
    }
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

public class ContractService : CRUDService<Contract>, IContractService
{
    public ContractService(IRepository<Contract> repository) : base(repository)
    {
    }
}


public class CRUDService<TEntity> : ICRUDService<TEntity> where TEntity : IEntity
{
    protected readonly IRepository<TEntity> repository;

    public CRUDService(IRepository<TEntity> repository)
    {
        this.repository = repository;
    }

    public TEntity Get(int id)
    {
        var entities = this.repository.Query().Where(s => s.Id …
Run Code Online (Sandbox Code Playgroud)

nhibernate linq-to-nhibernate

12
推荐指数
1
解决办法
1879
查看次数

如何实现IXunitTestCollectionFactory

我找不到任何关于使用/实现的文档IXunitTestCollectionFactory.

我有一些关于如何解决某些测试用例存在的自定义逻辑,从xunit源/样本中的翻版,这似乎是要走的路.

public class Foo : IXunitTestCollectionFactory
{
    public Foo(ITestAssembly assembly, IMessageSink messageSink)
    {
        throw new NotImplementedException();
    }

    public ITestCollection Get(ITypeInfo testClass)
    {
        throw new NotImplementedException();
    }

    public string DisplayName
    {
        get { throw new NotImplementedException(); }
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎永远不会被运行,或者至少吞下异常并且我放在那里的任何真实代码似乎都没有运行.

我已经尝试将其添加到测试组件中,但无济于事

[assembly: CollectionBehavior("MyAssembly.Foo", "MyAssembly")]
Run Code Online (Sandbox Code Playgroud)

我从哪里开始?这个地方有没有这方面的文件?

xunit

12
推荐指数
1
解决办法
297
查看次数

如何从字符串为深属性创建表达式树/ lambda

给定一个字符串:"Person.Address.Postcode"我希望能够在Person的实例上获取/设置此postcode属性.我怎样才能做到这一点?我的想法是将字符串拆分为"." 然后遍历各个部分,查找前一个类型的属性,然后构建一个看起来像(伪语法道歉)的表达式树:

(person => person.Address) address => address.Postcode
Run Code Online (Sandbox Code Playgroud)

虽然我真的很麻烦地创建表达式树!如果这是最好的方式,有人可以建议如何去做,还是有更简单的选择?

谢谢

安德鲁

public class Person
{
    public int Age { get; set; }
    public string Name { get; set; }
    public Address Address{ get; set; }

    public Person()
    {
        Address = new Address();
    }
}

public class Address 
{
    public string Postcode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# lambda expression-trees

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

ado.net transaction.commit抛出semaphorefullexception

当我提交交易时,我得到:

System.Threading.SemaphoreFullException: Adding the specified count to the semaphore would cause it to exceed its maximum count.
   at System.Threading.Semaphore.Release(Int32 releaseCount)
   at System.Data.ProviderBase.DbConnectionPool.PutNewObject(DbConnectionInternal obj)
   at System.Data.ProviderBase.DbConnectionPool.DeactivateObject(DbConnectionInternal obj)
   at System.Data.ProviderBase.DbConnectionPool.PutObject(DbConnectionInternal obj, Object owningObject)
   at System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Close()
   at System.Data.SqlClient.SqlConnection.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Dispose()
   // rest of my stack trace here
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我是不是在某个地方正确地关闭了连接并填满了游泳池?如果是这样,我如何在SQL Server 2008 R2中进行检查?

这是我的代码(虽然这可能不是导致连接泄漏的代码)

using (var connection = connectionFactory.GetConnection())
{
    connection.Open();

    using (var transaction = connection.BeginTransaction())
    {
        try
        {
            using (var command = connection.CreateCommand())
            {
                command.Connection = connection;
                command.Transaction …
Run Code Online (Sandbox Code Playgroud)

c# ado.net transactions sql-server-2008-r2

11
推荐指数
1
解决办法
4948
查看次数

比较英语句子相似度的算法

我有一系列句子,我需要分析它们,看看它们有多相似.

有没有建立的算法来做到这一点?

我很在乎:

  • 包含相同的单词(暂时忽略拐点)
  • 以相似的顺序包含相同的单词

我之前使用Levenshtein距离和n-gram进行拼写,虽然我不完全相信这些是否符合我的目的.

天真地说,"我不关心拼写差异,拼写错误可以被视为不同的词语",尽管考虑到这一点可能会很好.

也许在空间分割句子和上述(或其他)算法之一的混合可能是一个起点

有哪些选择?有什么建议?

谢谢!

algorithm

11
推荐指数
1
解决办法
2939
查看次数

Webpack 5 和 ESM

我想我已经阅读了 SO 上的每个线程以及互联网上的每个相关页面,所有内容都有一些问题的变体

我想:

  • 使用 webpack 捆绑我的 Web 应用程序
  • 在我的源 js 中使用 ES 模块并将它们转译为更广泛的浏览器支持
  • 在我的 webpack 配置中使用 ES 模块

Node 14 据说支持 ESM,所以让我们使用它

设置1

"type": "module"在我的package.json

然后我的webpack.config.js看起来像:


import { somethingUseful } from './src/js/useful-things.js';

export default (env, argv) => {
    return {
        // webpack config here
    };
}
Run Code Online (Sandbox Code Playgroud)

运行> webpack(webpack-cli)我得到:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: D:\git\Useroo\webpack.config.js
require() of ES modules is not supported.
require() of webpack.config.js from C:\nvm\v14.14.0\node_modules\webpack-cli\lib\groups\resolveConfig.js is an …
Run Code Online (Sandbox Code Playgroud)

javascript node.js webpack

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

ASP.NET HttpApplication生命周期

Global.asax.cs扩展的HttpApplication类是否在应用程序的生命周期内存在?

在什么时候可以创建/销毁实例?

我正在经历两次application_start触发,它似乎与应用程序池回收有关,并且通过此过程发出请求.我还没有完全调试它,我现在没有时间深入研究它.那么,就上述问题而言,以下是一个安全的解决方案吗?

public class MvcApplication : System.Web.HttpApplication
{
    public static object syncLock = new object();
    public static bool applicationBooted;

    protected void Application_Start()
    {
        if(!applicationBooted)
        lock (syncLock)
        if(!applicationBooted)
        {
            // bootstrap here
            applicationBooted = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

asp.net

10
推荐指数
2
解决办法
6630
查看次数

NHibernate:由于延迟加载问题导致"flush()"没有处理"集合"

我有两节课:

class Parent
{
    public virtual Child Child { get; set; }
}

class Child 
{
    public virtual IList<GrandChild> GrandChildren { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个Parent从我加载的实例ISession,Parent.Child是延迟加载的(此时未加载).Child.GrandChildren也很懒.

如果我这样做:

session.Save(new Parent { Child = existingParent.Child } );
Run Code Online (Sandbox Code Playgroud)

我明白了 collection [Child.GrandChildren] was not processed by flush()

如果我引起existingParentChild被加载性能,只需通过访问:

var x = existingParent.Child.Name
Run Code Online (Sandbox Code Playgroud)

问题消失了.为什么会发生这种情况,我该如何解决它 - 最好不必改变我的提取策略?

**编辑:**父母对孩子有FK

我正在使用NH 2.1.2.4000

谢谢

nhibernate

10
推荐指数
1
解决办法
3683
查看次数

TestDriven.net与Gallio,MbUnit和NCover问题

为什么TestDriven.Net不能用于我的gallio/mbunit测试?

我已经将TDD.Net与MbUnit v2一起使用并且没有任何问题,但是在我的新电脑上使用新的gallio版本时,它什么也没做.

从解决方案资源管理器中的tdd右键单击菜单,如果我"使用调试器进行测试",我会在屏幕底部的VS状态栏中显示"0传递,0失败,0跳过".

如果我右键单击我的夹具并做同样的事情,我得到

"The target type doesn't contain tests from a known test framework or a 'Main' method."
Run Code Online (Sandbox Code Playgroud)

如果我在单独的测试中执行它,看起来它没有运行SetUp,所以测试失败(但至少它运行)

我知道这听起来像这个问题,但我的注册表看起来是正确的.

如果我尝试从TDD.Net菜单运行NCover,没有任何反应(除了输出窗口闪烁)

当我用resharper"运行单元测试"时,它会将它们全部拾取并正确运行.

我使用Gallio/MbUnit 3.0.5.546,TDD.Net 2.18.2268,Resharper 4.1,VS 2k8 Pro 9.0.30729.1 SP,.Net 3.5 SP1,Windows Server 2k8(x86)

mbunit ncover testdriven.net gallio

9
推荐指数
1
解决办法
4378
查看次数

StructureMap使用"扫描"自动注册泛型类型

我有一个界面:

IRepository<T> where T : IEntity
Run Code Online (Sandbox Code Playgroud)

我正在使用一些虚假的存储库实现来破坏我的UI,只返回任何旧数据.

它们看起来像这样:

public class FakeClientRepository : IRepository<Client>
Run Code Online (Sandbox Code Playgroud)

目前我这样做:

ForRequestedType<IRepository<Client>>()
   .TheDefaultIsConcreteType<FakeRepositories.FakeClientRepository>();
Run Code Online (Sandbox Code Playgroud)

但我所有的IEntities都有很多次.是否可以使用Scan自动注册我的所有虚假存储库以用于其各自的IRepository?

编辑:这是我得到的,但我得到错误说请求的类型没有注册:(

Scan(x =>
{
    x.TheCallingAssembly();
    x.IncludeNamespaceContainingType<FakeRepositories.FakeClientRepository>();
    x.AddAllTypesOf(typeof(IRepository<>));
    x.WithDefaultConventions();
});
Run Code Online (Sandbox Code Playgroud)

谢谢

安德鲁

c# structuremap

9
推荐指数
2
解决办法
6741
查看次数