请问一下,Database,ADO.NET,C#,和LINQ之间的关系式什么?
我们正在做一个小的项目,目前写好了C#部分,DB部分的代码了,接下来该怎么把上述四部分联系到一起呢?各部分之间的关系又是怎么样的呢?希望描述细致一些,谢谢!...
我们正在做一个小的项目,目前写好了C#部分,DB部分的代码了,接下来该怎么把上述四部分联系到一起呢?各部分之间的关系又是怎么样的呢?希望描述细致一些,谢谢!
展开
3个回答
2013-07-30
展开全部
linq to sql 是c#的3.5技术,和ado.net基本没有联系,但可以转换成ado.net的DataTable,它可以简便的替代你的 ado.net的代码,比如你创建一个linq to sql类命名为:DataClasses1,你打开这个,然后添加进你要操作的TALBE,假设为TABLE1,引用这个类时用:DataClasses1DataContext context=new DataClasses1DataContext();然后下面开始写你的查询或增加或删除语句,不熟悉LINQ TO SQL 的人刚开始会被它的复杂弄的头晕,写一段时间就慢慢习惯了,不过说实在的,有些复杂的SQL用LINQ TO SQL写起来简直麻烦的很,比如要用到Group by 等的SQL。我写一个简单的LINQ 转 List 泛型的类,给你参考: public List<myclass> myc = new List<myclass>();
public struct myclass
{
public string ManfaceCode;
public string ProductNumber;
public double ExpectedNumber;
} public void ReturnHList() //vw_生产报关系统_档案H 视图
{
DataClasses1DataContext dclass = new DataClasses1DataContext();
List<myclass> myv = (from cc in dclass.COPTCs //COPTCs 是一个表
join cd in dclass.COPTDs on new { cc.TC001, cc.TC002 } //COPTDs 这也是一个表
equals new
{
TC001 = cd.TD001,
TC002 = cd.TD002
}
into x
from cf in x.DefaultIfEmpty()
join ma in dclass.MOCTAs //MOCTAs 这也是一个表
on new
{
cf.TD001,
cf.TD002,
cf.TD003
}
equals new
{
TD001 = ma.TA026,
TD002 = ma.TA027,
TD003 = ma.TA028
}
where ((new char?[] { 'Y', 'y' }).Contains(ma.TA013) &&
new char?[] { 'Y', 'y' }.Contains(cc.TC027)
&& Convert.ToDateTime(ma.TA003) > Convert.ToDateTime("2010-07-20")
&& Convert.ToDateTime(ma.TA003) < Convert.ToDateTime("2010-12-31")
) select new
{
工单单别 = ma.TA001,
工单单号 = ma.TA002,
成品品号 = ma.TA006,
预计产量 = ma.TA015
//ma
}
/////ok
into my
select new myclass
{
ManfaceCode=my.工单单别+my.工单单号,
ProductNumber = my.成品品号,
ExpectedNumber = Convert.ToDouble(my.预计产量),
}).ToList();
myc = myv;
} 以上的查询语句应该包括大部分SQL查询的内容了,语句用到了多字段、多表、多条件,如果你细心你会发现LINQ 生成语句其实就是一个查询的SQL,这就是说LINQ 和ADO的本质应该是相同的,都是用SQL去读取表,然后返回数据集。然后接下来的就是把这个List转成DataTable了,这个对你来说估计不难吧?直接用for循环写进去了。 至于ADO.NET 转 LINQ ,道理是一样的,你把DataTable 转成List,然后再用LINQ 去读这个List 了。这里就不写了。写了这么多,可以了吗?原创哦。
public struct myclass
{
public string ManfaceCode;
public string ProductNumber;
public double ExpectedNumber;
} public void ReturnHList() //vw_生产报关系统_档案H 视图
{
DataClasses1DataContext dclass = new DataClasses1DataContext();
List<myclass> myv = (from cc in dclass.COPTCs //COPTCs 是一个表
join cd in dclass.COPTDs on new { cc.TC001, cc.TC002 } //COPTDs 这也是一个表
equals new
{
TC001 = cd.TD001,
TC002 = cd.TD002
}
into x
from cf in x.DefaultIfEmpty()
join ma in dclass.MOCTAs //MOCTAs 这也是一个表
on new
{
cf.TD001,
cf.TD002,
cf.TD003
}
equals new
{
TD001 = ma.TA026,
TD002 = ma.TA027,
TD003 = ma.TA028
}
where ((new char?[] { 'Y', 'y' }).Contains(ma.TA013) &&
new char?[] { 'Y', 'y' }.Contains(cc.TC027)
&& Convert.ToDateTime(ma.TA003) > Convert.ToDateTime("2010-07-20")
&& Convert.ToDateTime(ma.TA003) < Convert.ToDateTime("2010-12-31")
) select new
{
工单单别 = ma.TA001,
工单单号 = ma.TA002,
成品品号 = ma.TA006,
预计产量 = ma.TA015
//ma
}
/////ok
into my
select new myclass
{
ManfaceCode=my.工单单别+my.工单单号,
ProductNumber = my.成品品号,
ExpectedNumber = Convert.ToDouble(my.预计产量),
}).ToList();
myc = myv;
} 以上的查询语句应该包括大部分SQL查询的内容了,语句用到了多字段、多表、多条件,如果你细心你会发现LINQ 生成语句其实就是一个查询的SQL,这就是说LINQ 和ADO的本质应该是相同的,都是用SQL去读取表,然后返回数据集。然后接下来的就是把这个List转成DataTable了,这个对你来说估计不难吧?直接用for循环写进去了。 至于ADO.NET 转 LINQ ,道理是一样的,你把DataTable 转成List,然后再用LINQ 去读这个List 了。这里就不写了。写了这么多,可以了吗?原创哦。
2013-07-30
展开全部
C# 是编程语言,Database是数据库,ADO.net是比较旧,但很稳定的通过C#访问和操作Database的一系列接口,而Linq是C#的扩充功能,你把他理解为加强版的ADO.net,但他使用起来更像sql语句,但是他是在C#中直接使用的,他的实现原理是对ADO.net做了包装,使用起来更方便一些而已。所以访问的过程是C#——>Linq——>ADO.net——>DataBase,如果你会Linq,则不用关心ADO.net了,如果你不会,你的访问过程是C#——>ADO.net——>DataBase
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-30
展开全部
LINQ TO SQL与 ADO.NET 有什么关系呢? database是数据库,C#是语言,更没边了,不过,可以在一起使用!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询