Linq to SQL: Как мне обновить форму, в которой есть данные из нескольких таблиц?
Возьмите простой пример:
У меня есть таблица клиентов и таблица счетов с полем customerID. Я хочу formview, который может обновлять данные в обеих таблицах.
FormView:
First Name (Customer)
Last Name (Customer)
Address (Customer)
AccountRate (Account)
Как я могу сделать это с Linq to SQL? Должен ли я просто использовать операторы Bind, такие как Bind("Account.AccountRate")? Или я должен сделать что-то волшебное в событии ItemUpdating или подобном?
3 ответа
Решение
Вам нужно будет присоединиться
from c in db.Customer
join a in db.Account
on a.customerID equals c.customerID
select new Model {FirstName = c.firstName,LastName = c.lastName,Address = c.address,AccountRate = a.accountRate}
определить вашу модель как класс где-то и привязать к этому.
Я никогда не работаю с linq to SQL, но в Entity Framework мне нужно сделать что-то вроде этого:
protected void ObjectDataSource_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
// Declaring the Entity context
AvalonEntities db = new AvalonEntities();
// In updating méthod of a ObjectDataSource the "e" arg is my customer, so i grab this
customer cus = (customer)e.InputParameters[0];
// say that i have a DropDown to select the account ...
// I Get de DropDown and get your SelectedValue.
DropDownList ddlAccount = (DropDownList)FormView1.FindControl("ddlAccount");
// Whit the value i declare a new account
account ac = new account () { id_account = int.Parse(ddlAccount.SelectedValue) };
// and associate it to Customer
cus.account = ac;
Надеюсь это поможет
У меня был некоторый успех при извлечении свойств из связанного класса, например:
First Name:
<asp:TextBox ID="FirstNameTextBox" runat="server"
Text='<%# Bind("Entitycontact.Namefirst") %>' />