我已经设计了一个数据库,为了更好地证明我的问题,我已经简化了它:
TB: CONSULTANTS
ID uniqueidentifier
NAME NVARCHAR(30)
TB: EXPENSES
ID uniqueidentifier
AMOUNT money
CONSULTANTID uniqueidentifier
ConsultantID是顾问表的FK,简单吗?
我创建了一个具有两个数据表的数据集,这些数据表是顾问和费用
带有相应的查询,例如顾问ID的获得费用,等等
但是,我想在网格视图中显示的是:
金额&顾问的名字代替顾问ID
当我尝试返回带有(expenseId,金额,顾问名称)的数据表时,它会导致错误,因为模式与基本数据表费用不匹配(expenseId,金额,顾问)。
我该怎么做才能获得(evelseID,金额,顾问名称(非id)) 我必须将另一个数据表创建另一个数据表吗?因为ASP.NET网站说这不是创建dal和bll 或我可能会对GridView的边界进行一些更改(如果可能的话,如何将两个不同适配器的输出绑定在一起)。
好吧,您可以在DAL
中创建一个方法,该方法从DB获取数据并根据适合您返回DataTable or DataSet
。
Select c.id as ConsultantId,c.Name as Name,e.amount
from consultant c
inner join experses e
on c.ConsultantId=e.ConsultantId
让您的BAL执行业务逻辑,例如创建顾问班级对象数组和对金额进行验证(例如金额不小于0)。
BAL返回Consultant
对象的数组,您可以使用这些数组与数据控件绑定(或者您甚至可以从BAL发送回数据。
我认为linq正在使用第一种方法,该方法从LINQ语法生成SQL脚本并返回您的特定类型对象的收集。
我从asp.net站点示例
找到答案在创建BLL之前,我们必须弄清每个表适配器中需要什么。
因此,就我而言,我必须使用Composite Select语句。
就是
从费用
从顾问中选择gunsensId,金额,顾问,顾问的顾问名称。然后,我们可以设法从此DAL中获取所有必需的数据。