假设我创建了类似的集合
Collection<IMyType> coll;
Run Code Online (Sandbox Code Playgroud)
然后我有许多实现,IMyTypem如T1,T2,T3 ...
然后我想知道集合coll是否包含T1类型的实例.所以我想写一个像这样的方法
public bool ContainType( <T>){...}
Run Code Online (Sandbox Code Playgroud)
这里param应该是类类型,而不是类实例.如何为这类问题编写代码?
使用C#实现的Singleton可以是:
public class Singleton
{
private static Singleton instance;
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用静态来实现它像:
public static class Globals{
public static Singleton Instance = new Singleton();
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,app也应该只获得整个应用程序的一个实例.那么这两种方法之间的区别是什么?为什么不直接使用静态成员(更简单直接)?
在Asp.NET aspx页面中,有一个数据保存按钮,当用户点击此按钮时,我想:1.立即禁用此按钮2.然后调用函数Save()后面的代码将数据保存回DB 3.然后再次启用此按钮.
我做了如下:
apsx中的JS函数:
function DisableSave(){saveButton = document.getElementById('<%= btnSave.ClientID%>'); saveButton.disabled = TRUE; 返回false; }
按钮脚本:
<--- asp:Button ID ="btnSave"OnCommand ="Button_Command"CommandName ="Save"runat ="server"Text ="Save"OnClientClick ="javascript:DisableSave();"/>
在函数Save()(假设由CommandName调用)后面的代码中,设置Save按钮enable back.
但是当我运行代码时,只禁用保存按钮,没有发生代码隐藏调用.
怎么解决?
表可以在插入/删除/更新时触发.触发器将由DB引擎在内部触发.
是否可以将参数传递给SQL Server数据库中的触发器,如存储过程?
我有问题再次调用WCF RIA服务来刷新客户端的数据.这是我的情况:
在服务器端,域服务是这样的:
public IQueryable<Person> GetPersonByID(int id)
{
var result = this.ObjectContext.Persons.
Where(e => e.PersonID == id);
return result; // check point 1
}
Run Code Online (Sandbox Code Playgroud)
在客户端,我按以下方式拨打电话(这是通过一个名为"刷新"按钮的按钮来调用):
this._amsService.Context.Load<Person>(
this._amsService.Context.GetPersonByIDQuery(this.Person.ID),
LoadBehavior.RefreshCurrent,
result =>
{
this.Person = result.Entities.FirstOrDefault(); //check point 2
this.RaisePropertyChanged("Person");
}, null);
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试的:
假设我在数据库中有一个人,数据说personID=1,Age = 16.
然后运行应用程序,我以正确的方式获取数据.
然后转到数据库,用SQL更新数据进行更改Age = 20.
然后回到应用程序并单击"刷新"按钮进行新的呼叫,但是年龄未更新到20,它仍然是16.
我在调试模式下运行应用程序,并检查数据:
在检查点1,我检查结果中的数据,没关系,Age = 20.
在检查点2,我检查数据result.Entities,数据没有刷新,它仍然是Age = 16.
我试过了LoadBehavior.MergeIntoCurrent,LoadBehavior.RefreshCurrent,但没有成功.
因此,我需要刷新SL应用程序主机页面以重新加载整个SL应用程序,然后我可以看到新数据.这对最终用户来说是不可接受的.
我不明白为什么.我也尝试使用fiddler来点击刷新按钮时获取数据,数据确实得到了最新的数据Age = 20 …
假设我有桌子:
Employee(empid, ....)
Phone(phoneid, ...)
EmployeePhone(empid, phoneid, ...)
Run Code Online (Sandbox Code Playgroud)
在外键关系上定义了外键创建和级联删除.
现在我从手机桌上删除了一部手机.我想在表Phone的Delete触发器中记录删除.
但我无法在手机中获得empid删除后的触发器
select empid from deleted d join EmployeePhone e on d.phoneid = e.Phoneid
Run Code Online (Sandbox Code Playgroud)
因为使用外键关系通过级联删除删除了EmployeePhone中的记录.
如何在删除触发器后获得电话中的empid?
我在Windows 7上下载并安装了.NET 4.5 beta,但不确定它的安装位置.
如何确保安装正常以及如何使用它?
我使用默认设置创建存储过程,如:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
Create PROCEDURE [dbo].[TestSP]
AS
BEGIN
set arithabort off
set arithignore on
--.....
END
Run Code Online (Sandbox Code Playgroud)
没事.然后我在表上创建了一个过滤的唯一索引,用于DB中的非空值,然后我无法在SQL Server Management Studio中运行任何存储过程.我得到的错误是这样的:
DELETE(或INSERT)失败,因为以下SET选项具有不正确的设置:'ANSI_NULLS,QUOTED_IDENTIFIER'.验证SET选项是否正确,以便与计算列和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作的索引视图和/或索引一起使用.
我尝试运行存储过程,如:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
EXEC TestSP
Run Code Online (Sandbox Code Playgroud)
要么
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
EXEC TestSP
Run Code Online (Sandbox Code Playgroud)
我仍然遇到上述错误.我很困惑.如何解决这个问题?
1.在Windows 8上安装VS 2012 Ultimate,然后启动VS 2012,但无法从VS2012 View菜单中找到设备面板.Windows商店应用程序只有3个调试选项:
Simulator
Local Machine
Remote Machine
Run Code Online (Sandbox Code Playgroud)
2.如果使用模拟器调试windows存储应用程序,运行应用程序,然后尝试使用Alt + F4停止调试应用程序,在模拟器中运行的应用程序将不会关闭,如果使用Alt + Tab切换到VS 2021以停止调试器, VS 2012将被冻结并最终崩溃.
不确定哪里错了.怎么解决?在哪里找到设备面板,它与模拟器相同吗?