从网络驱动器运行时我的.NET应用程序失败,即使同一个可执行文件从本地硬盘运行完全正常运行?
我尝试检查"完全信任",如下所示:
try
{
// Demand full trust permissions
PermissionSet fullTrust = new PermissionSet( PermissionState.Unrestricted );
fullTrust.Demand();
// Perform normal application logic
}
catch( SecurityException )
{
// Report that permissions were not full trust
MessageBox.Show( "This application requires full-trust security permissions to execute." );
}
Run Code Online (Sandbox Code Playgroud)
但是,这没有帮助,我的意思是应用程序启动并且永远不会输入catch块.但是,调试版本显示抛出的异常是由InheritanceDemand引起的SecurityException.有任何想法吗?
我有一个选择查询,它执行一些文本操作,基本上重新格式化一个字段,以便我可以在另一个表中查找它:
如果我有第一个表,如果我有一个像"J1/2"这样的字段,它会在相应字段中查找J1和J2的不同表中记录的ID.
这一切都运作良好.
现在我想更新原始表,所以我不必再使用这个字符串操作进行查找,但是我对更新查询的尝试以"操作必须使用可更新的查询"结束
有任何想法吗?
我的SELECT语句:
SELECT DISTINCT
t1.DD,
t1.TN,
t1.DD & " J" & MID(t1.TN,2,1) AS CalculatedStart,
t1.DD & " J" & MID(t1.TN,4,1) AS CalculatedEnd,
t2.ID
FROM t1 INNER JOIN t2
ON (t1.DD & " J" & MID(t1.TN,2,1)=t2.StartLink)
AND (t1.DD & " J" & MID(t1.TN,4,1)=t2.EndLink)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";
Run Code Online (Sandbox Code Playgroud)
回想一下 - 这很好,我从另一端得到了必要的t2.ID.
所以我想做一些事情:
UPDATE t1 SET t2ID = (
SELECT Query1.ID
FROM Query1
WHERE t1.DD=Query1.DD
AND t1.TN=Query1.TN
)
WHERE t1.TN Like "J?/?"
AND t1.DD Like …Run Code Online (Sandbox Code Playgroud) 我们正在执行到SQL Server的数据库迁移,并且为了支持遗留应用程序,我们在SQL Server表上定义了视图,这些视图以遗留应用程序所期望的方式呈现数据.
但是,当字段可能具有默认值时,我们现在遇到在这些视图上定义的INSTEAD OF INSERT触发器的问题.
我试着举个例子.
数据库中的表有3个字段,a,b和c.c是全新的,遗留应用程序不知道它,所以我们也有一个视图有2个字段,a和b.
当遗留应用程序尝试在其视图中插入值时,我们使用INSTEAD OF INSERT触发器来查找应该在字段c中的值,如下所示:
INSERT INTO realTable(a, b, c) SELECT Inserted.a, Inserted.b, Calculated.C FROM...
Run Code Online (Sandbox Code Playgroud)
(查找的详细信息无关紧要.)
除非字段b具有默认值,否则此触发器效果很好.这是因为如果查询
INSERT INTO legacyView(a) VALUES (123)
Run Code Online (Sandbox Code Playgroud)
执行,然后在触发器中,Inserted.b为NULL,而不是b的默认值.现在我有一个问题,因为我无法区分上面的查询,它将默认值放入b,并且:
INSERT INTO legacyView(a,b) VALUES (123, NULL)
Run Code Online (Sandbox Code Playgroud)
即使b是非NULLABLE,我也不知道如何在触发器中编写INSERT查询,这样如果为b提供了值,则在触发器中使用它,但如果不是,则使用默认值.
编辑:补充说,我宁愿不复制触发器中的默认值.默认值已经在数据库模式中,我希望我可以直接使用它们.
我正在尝试使用以下代码更改组合框的显示方式:
private void UpdateMapRoadPointList(List<GeographicAddress> plstMapRoadPointList)
{
cboFind.DataSource = plstMapRoadPointList;
cboFind.DisplayMember = "ShortCode";
cboFind.ValueMember = "";
}
Run Code Online (Sandbox Code Playgroud)
GeographicAddress是一个具有ShortCode属性的类,该属性返回一个字符串:
internal string ShortCode
{
get { return Distance + Carriageway; }
}
Run Code Online (Sandbox Code Playgroud)
但是,在使用应用程序时,disaplyed值仍然来自GeographicAddress.ToString().在调试时,似乎cboFind.DisplayMember ="ShortCode"没有效果!DisplayMember在执行该行之前和之后都是""!
我错过了什么?
.net ×2
c# ×2
sql ×2
combobox ×1
legacy ×1
ms-access ×1
networking ×1
sql-server ×1
sql-update ×1
triggers ×1
winforms ×1