Обновление, потому что первый пример не будет работать.
Вы можете сделать это с помощью универсального метода и интерфейса:
public interface IPlanTable
{
int PlanID { get; set; }
}
public static void LockRow<TEntity>(int TablePrimaryKey) where TEntity : class, IPlanTable
{
using (var context = McpDataContext.Create())
{
var tableToLock = (from lockTable in context.GetTable<TEntity>()
where lockTable.PlanID == TablePrimaryKey
select lockTable).Single();
tableToLock.Locked = true;
context.SubmitChanges();
}
}
Вам также придется использовать тот факт, что таблицы Linw2SQL создаются как частичные классы, чтобы расширить их, чтобы все соответствующие таблицы реализовали IPlanTable
Вы бы использовали его, как показано ниже:
LockRow<tblPlan>(23);
просто замените tblPlan
именем класса вашей таблицы.
Однако это не позволит вам устанавливать таблицу во время выполнения, LinqToSQL ориентирован на объект и является безопасным типом, указание таблицы, которую вы хотите получить, противоречит ее работе.