LINQ-to-SQL работает лучше всего, если вы разрешаете механизму LINQ управлять ключами (я предполагаю, что соотношение между MasterTable
и TableToBeUpdated
является взаимно-однозначным):
using (DataContext dc = new DataContext())
{
var objectToUpdate = dc.MasterTable.Single(a => a.Id == id).TableToBeUpdated;
objectToUpdate.SomeOtherColumn = "dkjsdlfs";
dc.SubmitChanges();
}
Это также предполагает, что вы связали две таблицы, либо вручную через конструктор, использующий ассоциацию, либо через отношение внешнего ключа в базе данных.
UPDATE:
Поскольку у вас нет связи с внешним ключом, вам необходимо связать таблицы вручную. На основании приведенного выше оператора SQL:
using (DataContext dc = new DataContext())
{
var objectToUpdate = dc.TableToBeUpdated
.Single(b => b.ForeignKeyId.Contains(dc.MasterTable.Single(a => a.Id == id).Id)
&& b.AnotherColumn == anotherColumn);
objectToUpdate.SomeOtherColumn = "dkjsdlfs";
dc.SubmitChanges();
}