我正在使用C#在.NET 4.0框架(beta2)上创建一个Web应用程序.
当我尝试使用名为"ActiveHomeScriptLib"的程序集时,出现以下错误:
无法嵌入Interop类型'ActiveHomeScriptLib.ActiveHomeClass'.请改用适用的界面.
当我将框架更改为3.5版时,我没有任何错误.
什么是互操作类型,为什么只有在我使用4.0框架时才会出现这种情况?
我有一个类型列表(System.Type),需要在数据库中查询.
对于每种类型,我需要调用以下extensionmethod(它是LinqToNhibernate的一部分):
Session.Linq<MyType>()
Run Code Online (Sandbox Code Playgroud)
但是我没有MyType,但我想使用Type.
我有的是:
System.Type typeOne;
Run Code Online (Sandbox Code Playgroud)
但我无法执行以下操作:
Session.Linq<typeOne>()
Run Code Online (Sandbox Code Playgroud)
如何使用Type作为通用参数?
我正在尝试创建某种类型的列表.
我想使用List符号,但我所知道的只是一个"System.Type"
类型a是可变的.如何创建变量类型列表?
我想要类似于这段代码的东西.
public IList createListOfMyType(Type myType)
{
return new List<myType>();
}
Run Code Online (Sandbox Code Playgroud) 我有一个嵌套的存储过程调用
在其中一个存储过程中,我想将结果保存到表变量中,如下所示:
INSERT INTO @myTable
EXEC sp_myStoredProcedure
Run Code Online (Sandbox Code Playgroud)
但是,因为proc.嵌套发生以下错误:INSERT EXEC语句不能嵌套
必须从另一个过程调用该过程,更改此选项不是一个选项.我想尝试使用输出参数,但仍然必须使用Insert into语句进行设置.
将从存储过程调用中检索到的数据保存到变量中的其他选项有哪些?
我正在使用NHibernate(2.0.1.4)与NHibernate.Linq(1.0.0.4)从数据库中获取Node类型的对象.
当我得到这些对象时,我得到的集合的最后一个对象是Proxy类型(因为我使用了"NHibernate.ByteCode.LinFu"")
我使用了以下linq查询:
var mynodes = from node in session.Linq<Node>() where ancestorNodes.Contains(node.Id) select node).ToList()
Run Code Online (Sandbox Code Playgroud)
anchestorNodes是要获取的节点对象的Id列表.
当我在"ancestorNodes"列表中有3个id时,我从查询中获得的结果(mynodes)的最后一个对象是nodeProxy类型.
怎么会这样?为什么它总是最后一个对象?我怎么解决这个问题?
我想删除某个实体的多个记录,其中实体的id在我拥有的ID列表中.我正在尝试使用NHibernate在C#中执行此操作.
我所拥有的是一个ID列表.
我想做类似的事情:
var idList = new List<Guid>() { Guid.NewGuid(),Guid.NewGuid()};
_session.CreateQuery("DELETE FROM MapsItem o WHERE o.Id = IN :idList")
.SetParameterList("idList", idList)
.ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud)
这导致以下错误:
Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 33 [DELETE FROM Album o WHERE o.Id = IN :idList]
Run Code Online (Sandbox Code Playgroud)
该查询是一个HQL语句.
HQL查询有什么问题.
对上述问题提供的两个答案都给出了正确的解决方案.但是,当我执行HQL时,错误是这样的:
could not insert/select ids for bulk delete[SQL: insert into #MapsItem SELECT mapsitem0_.Id as Id FROM MapsItem mapsitem0_ inner join BaseEntity mapsitem0_1_ on mapsitem0_.Id=mapsitem0_1_.Id WHERE Id in (? , ? , ? , ? , …Run Code Online (Sandbox Code Playgroud) 我有一个MVC2网站,它使用其他程序集的视图.为此,我将视图标记为"嵌入式资源".
我能够看到视图但现在,当我改变视图时,我再也看不到变化了.
我将视图称为嵌入式资源的方式与此类似:
return View("~/Extension/Extensions.MyExtension.dll/" +
"Extensions.MyExtension.Views.MyItem.Details.ascx", entity);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"扩展"部分指示必须将视图作为嵌入资源加载.以下部分表示包含视图的程序集.最后一部分是视图的位置(包括命名空间).
在更改视图的整个内容后,如何仍然显示来自早期视图的数据.甚至将视图取消标记为嵌入资源.
为了确保我有最新的Extensions.myExtension.dll程序集,我将程序集复制到网站的bin文件夹中.我用反射器检查了组件,看看组件中是否有正确的视图.这是正确的观点,但我仍然看到旧视图.
更改视图的名称可以暂时解决问题,但对我来说这不是一个好的解决方案.当我将视图的名称更改回原来的状态时,会显示旧视图.
我想运行一些单元测试.对于此测试,我需要使用app.config文件中的另一个值,然后使用默认值.
在这篇文章" 使用nunit重新加载app.config "中,我找到了一个解决方案.
但是,当一次运行多个测试时,某些测试会失败,因为在部署该函数后未调用旧的配置文件(app.config).怎么会这样?
我在Web应用程序中有一个字符串字符串是这样的:
`1234567890-=[]\ ;',./\~!@#$%^&*()_+{}|:"<>?|
Run Code Online (Sandbox Code Playgroud)
编码后(通过使用Server.Encode()),它显示以下内容:
`1234567890-=[]\\ ;',./\\~!@#$%^&*()_+{}|:"<>?|
Run Code Online (Sandbox Code Playgroud)
哪个是对的
但是,当我使用Response.Write(theSecondExample)结果时是这样的:
`1234567890-=[]\ ;',./\~!@#$%^&*()_+{}|:"<>?|
Run Code Online (Sandbox Code Playgroud)
反斜杠丢失了!
怎么可能输出不符合我的预期?我该怎样预防呢?
c# ×8
c#-4.0 ×2
nhibernate ×2
.net-4.0 ×1
app-config ×1
encoding ×1
exec ×1
generics ×1
hql ×1
list ×1
sql ×1
sql-delete ×1
sql-server ×1
types ×1
unit-testing ×1