这看起来像是一个基本问题,但我无法找到答案的MSDN文章或StackOverflow问题:是否可以在T4模板中进行行注释或阻止注释?我不打算生成带注释的代码(这很容易和直接),而是注释掉我的T4标记块.那可能吗?
这里遇到了一些困难的情况:我们的系统偶尔会出现死锁.而且我根本没有强大的数据库并发背景.
System.Data.SqlClient.SqlException: Transaction (Process ID 69) was deadlocked on
lock resources with another process and has been chosen as the deadlock victim.
Rerun the transaction.
Run Code Online (Sandbox Code Playgroud)
有几个应用程序访问数据库:使用Entity Framework访问数据库的主要MVC应用程序和几个简单的控制台应用程序,每个应用程序使用ADO.NET和原始SQL查询数据库,并通过BinaryTap ActiveRecord插入数据.
不幸的是,我是客户组织的FNG,所以我无法部署和测试新想法.此外,我们正在使用SSMS Express,因此我无法访问SQL事件探查器.但是我立即解决问题并不重要,更重要的是我记录了我对问题的分析.
当它说我应该重新运行事务时,错误消息是否有任何真相?这是我们的DaoBase - 我们每个HttpContext使用一个ObjectContext(通过Db属性).我们总是将我们的Dao更新(但不是查询)放在SafeAction中,以便它们包含在事务中.我试图正确地重新运行交易吗?
public abstract class DaoBase
{
protected static CaseMateEntities Db
{
get
{
return ContextHelper<CaseMateEntities>.GetCurrentContext();
}
}
protected static void SafeAction(Action<ObjectContext> action)
{
Exception exception = null;
try {
using (var scope = new TransactionScope()) {
try {
if (Db.Connection.State != ConnectionState.Open)
Db.Connection.Open();
if (action != null)
action(Db); …Run Code Online (Sandbox Code Playgroud)