是否可以在提交事务之前处理分配给事务的命令?我自己测试了以下代码,它似乎运行良好,但这是一个相当小的例子,所以我正在寻找确认,如果有人肯定知道.
internal static void TestTransaction()
{
try
{
Program.dbConnection.Open();
using (SqlTransaction transaction = Program.dbConnection.BeginTransaction())
{
Boolean doRollback = false;
for (int i = 0; i < 10; i++)
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO [testdb].[dbo].[transactiontest] (testvalcol) VALUES (@index)", Program.dbConnection, transaction))
{
cmd.Parameters.AddWithValue("@index", i);
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException)
{
doRollback = true;
break;
}
}
}
if (doRollback)
transaction.Rollback();
else
transaction.Commit();
}
}
finally
{
Program.dbConnection.Close();
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何强制缩进C#条件指令?
假设我想在Visual Studio中键入:
class Program
{
private const Byte NUM_THREADS =
#if DEBUG
1;
#else
8;
#endif
}
Run Code Online (Sandbox Code Playgroud)
如果我只是输入它(即不手动修复任何缩进),Visual Studio将像这样格式化:
class Program
{
private const Byte NUM_THREADS =
#if DEBUG
1;
#else
8;
#endif
}
Run Code Online (Sandbox Code Playgroud)
有什么我可以做的,所以它自动缩进所以它看起来像第一个例子?
重现:
public class TestCase
{
public Boolean MyFieldIsFour(MyRecord myRecord)
{
return myRecord.MyField == 4;
}
}
public record MyRecord(int MyField);
Run Code Online (Sandbox Code Playgroud)
右键单击int MyField并选择Find All References。Visual Studio 找不到任何对MyField. 我本希望它能在 找到参考myRecord.MyField。如果MyRecord更改为 a class,则 Visual Studio 可以按预期查找引用。
这是 Visual Studio 中的错误吗?我现在如何才能真正找到records 的参考资料?
鉴于功能async Task<(Boolean result, MyObject value)> TryGetAsync(),我可以做到
if((await TryGetAsync()) is var ret && ret.result)
{
//use ret.value
}
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试使用声明类型或使用解构来获得错误"在此上下文中不允许声明":
//declaration. error
if((await TryGetAsync()) is (Boolean result, MyObject value) ret && ret.result)
{
//use ret.value
}
//deconstruction, also error.
if((await TryGetAsync()) is (Boolean result, MyObject value) && result)
{
//use value
}
Run Code Online (Sandbox Code Playgroud)
如何避免var ret在此方案中使用第一个选项?我的问题是类型不明显(这是一个单独的讨论).
我正在使用System.Windows.Forms.TextBox.根据文档,MaxLength属性控制进入用户可以键入或粘贴到TextBox中的字符数量(即,可以通过使用例如AppendText函数或Text属性以编程方式添加更多字符).当前的字符数量可以从TextLength酒店获得.
Clear()当达到自定义限制时调用?编辑:我测试过它可以容纳超过600k个字符,无论如何MaxLength,此时我手动停止了程序并询问了这个问题.
在以前的版本中,我们可以在不知道它是否存在的情况下删除实体.
svc = new TestContext();
item = new TestEntity("item2pk", "item2rk");
svc.AttachTo("TestTable", item, "*");
svc.DeleteObject(item);
svc.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
新的TableOperations没有此语法.我必须使用这种旧方法还是有办法?我想保持一致,因为现在我的所有代码都使用了第2版的新类.
编辑:标题具有误导性
可以[assembly: InternalsVisibleTo("NameOfOtherAssembly")]在 AssemblyInfo.cs 中指定。
但是是否可以将其限制为特定的内部功能?
例如,是否有可以应用于每个功能的属性?
[InternalVisibleTo("NameOfOtherAssembly")]
internal void ShouldBeVisible()
{}
internal void ShouldNotBeVisible()
{}
Run Code Online (Sandbox Code Playgroud)
如果没有,有没有其他方法可以做到这一点?
我有一个带有a的类readonly CloudBlobContainer,并且函数可以在CloudBlockBlobs里面进行操作.如果我想对a做多个操作CloudBlockBlob,如果我只获取CloudBlockBlob一次引用并将其传递给函数,我是否会避免不必要的网络活动(以及相关的减速)?或者我可以多次获得参考而不用担心?
TL; DR:是CloudBlobContainer.GetBlockBlobReference纯粹的本地操作,这样才不会造成网络活动,如果我打电话了吗?