小编naw*_*fal的帖子

为什么GetGenericTypeDefinition失败?

我有一段代码需要在我的存储库保存时检查实体.我在保存上有一个NHibernate拦截器来检查这个但是当我调用该GetGenericTypeDefinition函数时代码失败并出现错误:

[InvalidOperationException:由于对象的当前状态,操作无效.] System.RuntimeType.GetGenericTypeDefinition()+ 7525641

代码是这样的:

protected override object PerformSaveOrUpdate(SaveOrUpdateEvent evt)
{
    if (evt.Entity.GetType().GetGenericTypeDefinition() == typeof(IChild<>))
    {
        var parent = (evt.Entity as IChild<Entity>).Parent;
        if (parent != null)
        {
            parent.UpdateCacheCounters();
            evt.Session.Save(parent);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

c# generics nhibernate

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

UNHEX和X之间的区别(MySQL)

在处理数据库中的十六进制值时,MySQL UNHEX和X之间的区别是什么?

例如.

SELECT * FROM test WHERE guidCol IN (UNHEX('hexadecimalstring'));

SELECT * FROM test WHERE guidCol IN (X'hexadecimalstring');
Run Code Online (Sandbox Code Playgroud)

两者都给了我精确的结果集.那有什么区别吗?性能影响?

编辑: guidCol的基础类型当然是二进制的

mysql hex guid

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

EF:将表值参数从 C# 传递给用户定义的函数

我在 SQL Server 中有一个用户定义的函数,它接受 TVP(表值参数)作为参数。在 EF 中,如何从 C# 调用这样的函数?

我尝试使用该方法,ObjectContext.CreateQuery<>但出现以下错误:

函数“QueryByParam”的参数“param”无效。参数只能是可以转换为 Edm 标量类型的类型。

也尝试过方法ObjectContext.ExecuteStoreQuery<>并得到相同的错误。IQueryable无论如何它都不会返回。

示例代码

[DbFunction(nameof(SampleDbContext), "QueryByParam")]
public IQueryable<SecurityQueryRow> QueryByParam(IEnumerable<ProfileType> profiles, bool isActive = false)
{
    DataTable dataTable = ....
    ObjectParameter profilesParam = new ObjectParameter("profileTypeIds", dataTable);

    ObjectParameter isActiveParam = new ObjectParameter("isActive ", isActive);

    return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<SecurityQueryRow>(
            string.Format("[{0}].[{1}](@profileTypeIds, @isActive)", GetType().Name, "QueryByParam"),
            profilesParam,
            isActiveParam);
}
Run Code Online (Sandbox Code Playgroud)

要求是我们需要一个 IQueryable 返回,而不是消耗的结果。

c# sql-server entity-framework table-valued-parameters entity-framework-6

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

内联函数

内联是什么?

它是干什么用的?

你能用C#内联一些东西吗?

c# inlining

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

如何在参数是可选的时获取默认构造函数

我正在使用Type.GetConstructor(Type.EmptyTypes)获取类的默认构造函数.如果类具有没有参数(class A)的默认构造函数,则它可以工作.但是如果一个类有一个带有所有参数optional(class B)的构造函数,它就不起作用.程序不知道可选参数是什么,因为它只需要默认的构造函数.我可以使用哪些语句使其适用于这两种情况?谢谢,感谢任何帮助!

public class A
{
    public A() {}
} 

public class B
{
    public B(int i = 0, string str = "") {}
}
Run Code Online (Sandbox Code Playgroud)

c# reflection constructor

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

获取班级所有成员的集合

我想获得一个类中所有成员的集合.我怎么做?我使用以下内容,但它给了我许多额外的名字和成员.

Type obj  =  objContactField.GetType();
MemberInfo[] objMember = obj.GetMembers();
String name = objMember[5].Name.ToString();
Run Code Online (Sandbox Code Playgroud)

c# reflection member

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

基于键对字典进行排序

我需要根据键在VB.net中订购一个Dictionary.键和值都是字符串.字典没有.Sort().有没有办法做到这一点,而无需编写自己的排序算法?

vb.net sorting dictionary

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

检查存在然后插入SortedList的快速方法

每当我想插入一个SortedList,我检查项目是否存在,然后我插入.这两次执行相同的搜索吗?一旦看到该项目是否存在并再次找到插入项目的位置?有没有办法优化它来加快速度,或者只是这样做的方式,没有必要改变?

if( sortedList.ContainsKey( foo ) == false ){
    sortedList.Add( foo, 0 );
}
Run Code Online (Sandbox Code Playgroud)

c# performance sortedlist

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

是否有任何实现按键删除并同时获取值?

我正在做一个性能关键程序(很少学术),我正在寻求尽可能优化(不像它证明"这是"瓶颈).

我有一个自定义字典结构(.NET的包装Dictionary<,>),我会不断删除一个阶段的项目(按Key值).我需要Value删除的项目.现在我必须这样做:

T t;
if !TryGet(key, out t)
   return false;

Remove(key);
Run Code Online (Sandbox Code Playgroud)

这是两次查找.我会喜欢这个:

public bool Remove(S key, out T value)
{
    // implementation
}
Run Code Online (Sandbox Code Playgroud)

我知道框架中没有任何内容,但是某处有实现吗?如果是这样的话,我会用那个更改我的支持词典.

编辑:嗯,我知道这两个TryGetValueRemove是O(1).只知道是否有任何集合结构只能在一次查找中产生相同的效果.正如我所说,我正在努力尽可能地优化.只是知道.

.net c# dictionary asymptotic-complexity trygetvalue

9
推荐指数
3
解决办法
4461
查看次数

如何以编程方式将CamelCase名称更改为可显示的名称

我想采用驼峰式的类名或枚举名称,并以普通文本显示给用户.我怎样才能以编程方式执行此操作?

样本输入:

MainPageBackgroundColor

预期产量:

主页背景颜色

要么

主页背景颜色

c# string

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