Хорошо, я нашел альтернативное (но не элегантное) решение. Я использую ObjectDataSource вместо LinqDataSource. Затем я определил класс
public class RuleInstanceProjection {
public RuleInstanceProjection(){}
// Bind properties from the LINQ object.
public RuleInstanceProjection(RuleInstance instance) { ... }
public int RuleInstanceId {get; set;}
public string Rule_Name {get;set;}
...
}
Объект выше принимает RuleInstance в качестве конструктора и обновляет свои собственные свойства всеми значениями, которые мне нужны в FormView. Затем я настраиваю ObjectDataSource для использования другого пользовательского класса, RuleInstanceProjectionDS, в качестве источника данных. Этот класс обрабатывает обновления и вставки моего пользовательского класса RuleInstanceProjection:
public class RuleInstanceProjectionDS
{
public RuleInstanceProjectionDS() { }
public RuleInstanceProjection GetRuleInstance(int ruleInstanceId)
{ /* Retrieve the RuleInstance, and instantiate
a RuleInstanceProjection object */ }
public void SaveInstanceProjection(InstanceProjection projection)
{ /* Map fields back to the LINQ objects and submit. */ }
}
Поэтому я могу обрабатывать все отображения в этих двух классах. Теперь мне остается только решить, действительно ли это лучше, чем непосредственное обновление элементов управления графическим интерфейсом ...
Должен сказать, что это не самое элегантное решение, и я надеюсь, что в более поздних версиях ASP.NET будет улучшенная структура привязки данных. Текущий только кажется, что обрабатывает самые тривиальные случаи: (.